4
What do you know about the quick brown fox?
5
What do you know about THE QUICK BROWN FOX?
10
What do you know about the quick brown fox?
11
What do you know about THE QUICK BROWN FOX?
13
/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
14
abcd\t\n\r\f\a\e9;\$\\?caxyz
16
/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
17
abxyzpqrrrabbxyyyypqAzz
18
abxyzpqrrrabbxyyyypqAzz
19
aabxyzpqrrrabbxyyyypqAzz
20
aaabxyzpqrrrabbxyyyypqAzz
21
aaaabxyzpqrrrabbxyyyypqAzz
22
abcxyzpqrrrabbxyyyypqAzz
23
aabcxyzpqrrrabbxyyyypqAzz
24
aaabcxyzpqrrrabbxyyyypAzz
25
aaabcxyzpqrrrabbxyyyypqAzz
26
aaabcxyzpqrrrabbxyyyypqqAzz
27
aaabcxyzpqrrrabbxyyyypqqqAzz
28
aaabcxyzpqrrrabbxyyyypqqqqAzz
29
aaabcxyzpqrrrabbxyyyypqqqqqAzz
30
aaabcxyzpqrrrabbxyyyypqqqqqqAzz
31
aaaabcxyzpqrrrabbxyyyypqAzz
32
abxyzzpqrrrabbxyyyypqAzz
33
aabxyzzzpqrrrabbxyyyypqAzz
34
aaabxyzzzzpqrrrabbxyyyypqAzz
35
aaaabxyzzzzpqrrrabbxyyyypqAzz
36
abcxyzzpqrrrabbxyyyypqAzz
37
aabcxyzzzpqrrrabbxyyyypqAzz
38
aaabcxyzzzzpqrrrabbxyyyypqAzz
39
aaaabcxyzzzzpqrrrabbxyyyypqAzz
40
aaaabcxyzzzzpqrrrabbbxyyyypqAzz
41
aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
42
aaabcxyzpqrrrabbxyyyypABzz
43
aaabcxyzpqrrrabbxyyyypABBzz
44
>>>aaabxyzpqrrrabbxyyyypqAzz
45
>aaaabxyzpqrrrabbxyyyypqAzz
46
>>>>abcxyzpqrrrabbxyyyypqAzz
48
abxyzpqrrabbxyyyypqAzz
49
abxyzpqrrrrabbxyyyypqAzz
50
abxyzpqrrrabxyyyypqAzz
51
aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
52
aaaabcxyzzzzpqrrrabbbxyyypqAzz
53
aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
186
/^.+[0-9][0-9][0-9]$/
194
/^.+?[0-9][0-9][0-9]$/
202
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
203
abc!pqr=apquxz.ixr.zzz.ac.uk
205
!pqr=apquxz.ixr.zzz.ac.uk
206
abc!=apquxz.ixr.zzz.ac.uk
207
abc!pqr=apquxz:ixr.zzz.ac.uk
208
abc!pqr=apquxz.ixr.zzz.ac.ukk
211
Well, we need a colon: somewhere
229
/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
237
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
238
1 IN SOA non-sp1 non-sp2(
239
1 IN SOA non-sp1 non-sp2 (
241
1IN SOA non-sp1 non-sp2(
243
/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
253
/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
264
/^(?=ab(de))(abd)(e)/
267
/^(?!(ab)de|x)(abd)(f)/
273
/^[\da-f](\.[\da-f])*$/i
289
/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
295
/(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
308
/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
311
/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
314
/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
376
/\A(abc|def)=(\1){2,3}\Z/
382
/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
386
/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
388
catatonic catatonic23
389
caterpillar caterpillar23
392
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
393
From abcd Mon Sep 01 12:33:02 1997
395
/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
396
From abcd Mon Sep 01 12:33:02 1997
397
From abcd Mon Sep 1 12:33:02 1997
399
From abcd Sep 01 12:33:02 1997
406
the quick brown\t fox
409
foobar is foolish see?
411
/(?:(?!foo)...|^.{0,2})bar(.*)/
417
/^(\D*)(?=\d)(?!123)/
422
/^1234(?# test newlines
426
/^1234 #comment in extended re
459
/^[ab]{1,3}?(ab*?|b)/
466
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
467
\) )* # optional leading comment
469
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
470
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
472
" (?: # opening quote...
473
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
475
\\ [^\x80-\xff] # Escaped something (something != CR)
478
(?: (?: [\040\t] | \(
479
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
480
\) )* \. (?: [\040\t] | \(
481
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
483
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
484
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
486
" (?: # opening quote...
487
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
489
\\ [^\x80-\xff] # Escaped something (something != CR)
491
) )* # further okay, if led by a period
493
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
494
\) )* @ (?: [\040\t] | \(
495
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
497
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
498
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
500
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
502
) # initial subdomain
505
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
506
\) )* \. # if led by a period...
508
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
510
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
511
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
513
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
520
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
521
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
523
" (?: # opening quote...
524
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
526
\\ [^\x80-\xff] # Escaped something (something != CR)
528
) # one word, optionally followed by....
530
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
532
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
533
\) | # comments, or...
535
" (?: # opening quote...
536
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
538
\\ [^\x80-\xff] # Escaped something (something != CR)
543
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
545
(?: @ (?: [\040\t] | \(
546
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
548
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
549
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
551
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
553
) # initial subdomain
556
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
557
\) )* \. # if led by a period...
559
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
561
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
562
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
564
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
569
(?: (?: [\040\t] | \(
570
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
571
\) )* , (?: [\040\t] | \(
572
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
573
\) )* @ (?: [\040\t] | \(
574
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
576
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
577
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
579
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
581
) # initial subdomain
584
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
585
\) )* \. # if led by a period...
587
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
589
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
590
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
592
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
596
)* # further okay, if led by comma
599
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
600
\) )* )? # optional route
602
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
603
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
605
" (?: # opening quote...
606
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
608
\\ [^\x80-\xff] # Escaped something (something != CR)
611
(?: (?: [\040\t] | \(
612
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
613
\) )* \. (?: [\040\t] | \(
614
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
616
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
617
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
619
" (?: # opening quote...
620
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
622
\\ [^\x80-\xff] # Escaped something (something != CR)
624
) )* # further okay, if led by a period
626
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
627
\) )* @ (?: [\040\t] | \(
628
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
630
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
631
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
633
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
635
) # initial subdomain
638
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
639
\) )* \. # if led by a period...
641
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
643
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
644
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
646
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
652
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
656
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
657
\) )* # optional trailing comment
659
Alan Other <user\@dom.ain>
662
\"A. Other\" <user.1234\@dom.ain> (a comment)
663
A. Other <user.1234\@dom.ain> (a comment)
664
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
665
A missing angle <user\@some.where
669
/[\040\t]* # Nab whitespace.
672
[^\\\x80-\xff\n\015()] * # normal*
674
(?: \\ [^\x80-\xff] |
676
[^\\\x80-\xff\n\015()] * # normal*
677
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
680
[^\\\x80-\xff\n\015()] * # normal*
683
[\040\t]* )* # If comment found, allow more spaces.
684
# optional leading comment
687
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
688
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
692
[^\\\x80-\xff\n\015"] * # normal
693
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
697
[\040\t]* # Nab whitespace.
700
[^\\\x80-\xff\n\015()] * # normal*
702
(?: \\ [^\x80-\xff] |
704
[^\\\x80-\xff\n\015()] * # normal*
705
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
708
[^\\\x80-\xff\n\015()] * # normal*
711
[\040\t]* )* # If comment found, allow more spaces.
714
[\040\t]* # Nab whitespace.
717
[^\\\x80-\xff\n\015()] * # normal*
719
(?: \\ [^\x80-\xff] |
721
[^\\\x80-\xff\n\015()] * # normal*
722
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
725
[^\\\x80-\xff\n\015()] * # normal*
728
[\040\t]* )* # If comment found, allow more spaces.
730
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
731
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
735
[^\\\x80-\xff\n\015"] * # normal
736
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
740
[\040\t]* # Nab whitespace.
743
[^\\\x80-\xff\n\015()] * # normal*
745
(?: \\ [^\x80-\xff] |
747
[^\\\x80-\xff\n\015()] * # normal*
748
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
751
[^\\\x80-\xff\n\015()] * # normal*
754
[\040\t]* )* # If comment found, allow more spaces.
758
[\040\t]* # Nab whitespace.
761
[^\\\x80-\xff\n\015()] * # normal*
763
(?: \\ [^\x80-\xff] |
765
[^\\\x80-\xff\n\015()] * # normal*
766
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
769
[^\\\x80-\xff\n\015()] * # normal*
772
[\040\t]* )* # If comment found, allow more spaces.
774
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
775
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
778
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
781
[\040\t]* # Nab whitespace.
784
[^\\\x80-\xff\n\015()] * # normal*
786
(?: \\ [^\x80-\xff] |
788
[^\\\x80-\xff\n\015()] * # normal*
789
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
792
[^\\\x80-\xff\n\015()] * # normal*
795
[\040\t]* )* # If comment found, allow more spaces.
796
# optional trailing comments
799
[\040\t]* # Nab whitespace.
802
[^\\\x80-\xff\n\015()] * # normal*
804
(?: \\ [^\x80-\xff] |
806
[^\\\x80-\xff\n\015()] * # normal*
807
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
810
[^\\\x80-\xff\n\015()] * # normal*
813
[\040\t]* )* # If comment found, allow more spaces.
815
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
816
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
819
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
822
[\040\t]* # Nab whitespace.
825
[^\\\x80-\xff\n\015()] * # normal*
827
(?: \\ [^\x80-\xff] |
829
[^\\\x80-\xff\n\015()] * # normal*
830
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
833
[^\\\x80-\xff\n\015()] * # normal*
836
[\040\t]* )* # If comment found, allow more spaces.
837
# optional trailing comments
842
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
843
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
847
[^\\\x80-\xff\n\015"] * # normal
848
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
853
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
857
[^\\\x80-\xff\n\015()] * # normal*
859
(?: \\ [^\x80-\xff] |
861
[^\\\x80-\xff\n\015()] * # normal*
862
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
865
[^\\\x80-\xff\n\015()] * # normal*
870
[^\\\x80-\xff\n\015"] * # normal
871
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
873
) # "special" comment or quoted string
874
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
877
[\040\t]* # Nab whitespace.
880
[^\\\x80-\xff\n\015()] * # normal*
882
(?: \\ [^\x80-\xff] |
884
[^\\\x80-\xff\n\015()] * # normal*
885
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
888
[^\\\x80-\xff\n\015()] * # normal*
891
[\040\t]* )* # If comment found, allow more spaces.
895
[\040\t]* # Nab whitespace.
898
[^\\\x80-\xff\n\015()] * # normal*
900
(?: \\ [^\x80-\xff] |
902
[^\\\x80-\xff\n\015()] * # normal*
903
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
906
[^\\\x80-\xff\n\015()] * # normal*
909
[\040\t]* )* # If comment found, allow more spaces.
911
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
912
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
915
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
918
[\040\t]* # Nab whitespace.
921
[^\\\x80-\xff\n\015()] * # normal*
923
(?: \\ [^\x80-\xff] |
925
[^\\\x80-\xff\n\015()] * # normal*
926
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
929
[^\\\x80-\xff\n\015()] * # normal*
932
[\040\t]* )* # If comment found, allow more spaces.
933
# optional trailing comments
936
[\040\t]* # Nab whitespace.
939
[^\\\x80-\xff\n\015()] * # normal*
941
(?: \\ [^\x80-\xff] |
943
[^\\\x80-\xff\n\015()] * # normal*
944
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
947
[^\\\x80-\xff\n\015()] * # normal*
950
[\040\t]* )* # If comment found, allow more spaces.
952
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
953
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
956
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
959
[\040\t]* # Nab whitespace.
962
[^\\\x80-\xff\n\015()] * # normal*
964
(?: \\ [^\x80-\xff] |
966
[^\\\x80-\xff\n\015()] * # normal*
967
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
970
[^\\\x80-\xff\n\015()] * # normal*
973
[\040\t]* )* # If comment found, allow more spaces.
974
# optional trailing comments
977
[\040\t]* # Nab whitespace.
980
[^\\\x80-\xff\n\015()] * # normal*
982
(?: \\ [^\x80-\xff] |
984
[^\\\x80-\xff\n\015()] * # normal*
985
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
988
[^\\\x80-\xff\n\015()] * # normal*
991
[\040\t]* )* # If comment found, allow more spaces.
993
[\040\t]* # Nab whitespace.
996
[^\\\x80-\xff\n\015()] * # normal*
998
(?: \\ [^\x80-\xff] |
1000
[^\\\x80-\xff\n\015()] * # normal*
1001
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1004
[^\\\x80-\xff\n\015()] * # normal*
1007
[\040\t]* )* # If comment found, allow more spaces.
1009
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1010
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1013
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1016
[\040\t]* # Nab whitespace.
1019
[^\\\x80-\xff\n\015()] * # normal*
1021
(?: \\ [^\x80-\xff] |
1023
[^\\\x80-\xff\n\015()] * # normal*
1024
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1027
[^\\\x80-\xff\n\015()] * # normal*
1030
[\040\t]* )* # If comment found, allow more spaces.
1031
# optional trailing comments
1034
[\040\t]* # Nab whitespace.
1037
[^\\\x80-\xff\n\015()] * # normal*
1039
(?: \\ [^\x80-\xff] |
1041
[^\\\x80-\xff\n\015()] * # normal*
1042
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1045
[^\\\x80-\xff\n\015()] * # normal*
1048
[\040\t]* )* # If comment found, allow more spaces.
1050
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1051
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1054
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1057
[\040\t]* # Nab whitespace.
1060
[^\\\x80-\xff\n\015()] * # normal*
1062
(?: \\ [^\x80-\xff] |
1064
[^\\\x80-\xff\n\015()] * # normal*
1065
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1068
[^\\\x80-\xff\n\015()] * # normal*
1071
[\040\t]* )* # If comment found, allow more spaces.
1072
# optional trailing comments
1074
)* # additional domains
1076
[\040\t]* # Nab whitespace.
1079
[^\\\x80-\xff\n\015()] * # normal*
1081
(?: \\ [^\x80-\xff] |
1083
[^\\\x80-\xff\n\015()] * # normal*
1084
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1087
[^\\\x80-\xff\n\015()] * # normal*
1090
[\040\t]* )* # If comment found, allow more spaces.
1091
# optional trailing comments
1094
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1095
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1099
[^\\\x80-\xff\n\015"] * # normal
1100
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1104
[\040\t]* # Nab whitespace.
1107
[^\\\x80-\xff\n\015()] * # normal*
1109
(?: \\ [^\x80-\xff] |
1111
[^\\\x80-\xff\n\015()] * # normal*
1112
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1115
[^\\\x80-\xff\n\015()] * # normal*
1118
[\040\t]* )* # If comment found, allow more spaces.
1121
[\040\t]* # Nab whitespace.
1124
[^\\\x80-\xff\n\015()] * # normal*
1126
(?: \\ [^\x80-\xff] |
1128
[^\\\x80-\xff\n\015()] * # normal*
1129
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1132
[^\\\x80-\xff\n\015()] * # normal*
1135
[\040\t]* )* # If comment found, allow more spaces.
1137
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1138
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1142
[^\\\x80-\xff\n\015"] * # normal
1143
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1147
[\040\t]* # Nab whitespace.
1150
[^\\\x80-\xff\n\015()] * # normal*
1152
(?: \\ [^\x80-\xff] |
1154
[^\\\x80-\xff\n\015()] * # normal*
1155
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1158
[^\\\x80-\xff\n\015()] * # normal*
1161
[\040\t]* )* # If comment found, allow more spaces.
1165
[\040\t]* # Nab whitespace.
1168
[^\\\x80-\xff\n\015()] * # normal*
1170
(?: \\ [^\x80-\xff] |
1172
[^\\\x80-\xff\n\015()] * # normal*
1173
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1176
[^\\\x80-\xff\n\015()] * # normal*
1179
[\040\t]* )* # If comment found, allow more spaces.
1181
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1182
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1185
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1188
[\040\t]* # Nab whitespace.
1191
[^\\\x80-\xff\n\015()] * # normal*
1193
(?: \\ [^\x80-\xff] |
1195
[^\\\x80-\xff\n\015()] * # normal*
1196
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1199
[^\\\x80-\xff\n\015()] * # normal*
1202
[\040\t]* )* # If comment found, allow more spaces.
1203
# optional trailing comments
1206
[\040\t]* # Nab whitespace.
1209
[^\\\x80-\xff\n\015()] * # normal*
1211
(?: \\ [^\x80-\xff] |
1213
[^\\\x80-\xff\n\015()] * # normal*
1214
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1217
[^\\\x80-\xff\n\015()] * # normal*
1220
[\040\t]* )* # If comment found, allow more spaces.
1222
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1223
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1226
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1229
[\040\t]* # Nab whitespace.
1232
[^\\\x80-\xff\n\015()] * # normal*
1234
(?: \\ [^\x80-\xff] |
1236
[^\\\x80-\xff\n\015()] * # normal*
1237
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1240
[^\\\x80-\xff\n\015()] * # normal*
1243
[\040\t]* )* # If comment found, allow more spaces.
1244
# optional trailing comments
1251
Alan Other <user\@dom.ain>
1254
\"A. Other\" <user.1234\@dom.ain> (a comment)
1255
A. Other <user.1234\@dom.ain> (a comment)
1256
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1257
A missing angle <user\@some.where
1261
/abc\0def\00pqr\000xyz\0000AB/
1262
abc\0def\00pqr\000xyz\0000AB
1263
abc456 abc\0def\00pqr\000xyz\0000ABCDE
1265
/abc\x0def\x00pqr\x000xyz\x0000AB/
1266
abc\x0def\x00pqr\x000xyz\x0000AB
1267
abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1350
/([^.]*)\.([^:]*):[T ]+(.*)/
1351
track1.title:TBlah blah blah
1353
/([^.]*)\.([^:]*):[T ]+(.*)/i
1354
track1.title:TBlah blah blah
1356
/([^.]*)\.([^:]*):[t ]+(.*)/i
1357
track1.title:TBlah blah blah
1497
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1500
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1524
/^([^a])([^\b])([^c]*)([^d]{3,4})/
1592
/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
1593
\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
1595
/P[^*]TAIRE[^*]{1,6}?LL/
1596
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1598
/P[^*]TAIRE[^*]{1,}?LL/
1599
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1606
/(\.\d\d((?=0)|\d(?=\d)))/
1616
Food is on the foo table
1619
The food is under the bar in the barn.
1622
The food is under the bar in the barn.
1625
I have 2 numbers: 53147
1628
I have 2 numbers: 53147
1631
I have 2 numbers: 53147
1634
I have 2 numbers: 53147
1637
I have 2 numbers: 53147
1640
I have 2 numbers: 53147
1643
I have 2 numbers: 53147
1646
I have 2 numbers: 53147
1651
/^(\D*)(?=\d)(?!123)/
1679
/\d\d\/\d\d\/\d\d\d\d/
1682
/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
1683
word cat dog elephant mussel cow horse canary baboon snake shark otherword
1684
word cat dog elephant mussel cow horse canary baboon snake shark
1686
/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
1687
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
1768
borfle\nbib.gif\nno\n
1771
borfle\nbib.gif\nno\n
1774
borfle\nbib.gif\nno\n
1777
borfle\nbib.gif\nno\n
1832
/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
1835
/^\d\d\d\d\d\d\d\d\d\d\d\d/
1838
/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
1850
/^[abcdefghijklmnopqrstuvwxy0123456789]/
1883
the \"quick\" brown fox
1884
\"the \\\"quick\\\" brown fox\"
1898
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
1899
<TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
1982
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
1985
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
1987
/(?>(\.\d\d[1-9]?))\d+/
1993
/^((?>\w+)|(?>\s+))*$/
1994
now is the time for all good men to come to the aid of the party
1996
this is not a line with only words and spaces!
2022
/((?>[^()]+)|\([^()]*\))+/
2025
/\(((?>[^()]+)|\([^()]+\))+\)/
2029
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2045
/(a b(?x)c d (?-x)e f)/
2083
/(?s-i:more.*than).*million/i
2086
more \n than Million
2089
more \n than \n million
2091
/(?:(?s-i)more.*than).*million/i
2094
more \n than Million
2097
more \n than \n million
2116
/(?<=a(?i)b)(\w\w)c/
2124
/(?:(a)|b)(?(1)A|B)/
2138
/^(?(?=abc)\w{3}:|\d\d)$/
2145
/^(?(?!abc)\d\d|\w{3}:)$/
2152
/(?(?<=foo)bar|cat)/
2160
/(?(?<!foo)cat|bar)/
2168
/( \( )? [^()]+ (?(1) \) |) /x
2171
the quick (abcd) fox
2174
/( \( )? [^()]+ (?(1) \) ) /x
2177
the quick (abcd) fox
2197
/((?i)blah)\s+(?i:\1)/
2269
/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
2282
/(?i:saturday|sunday)/
2302
/^([ab](?i)[cd]|[ef])/
2313
/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2330
/(?<=(?<!foo)bar)baz/
2338
/The case of aaaaaa is missed out below because I think Perl 5.005_02 gets/
2339
/it wrong; it sets $1 to aaa rather than aa. Compare the following test,/
2340
/where it does set $1 to aa when matching aaaaaa./
2359
/^(a\1?)(a\1?)(a\2?)(a\3?)$/
2377
/The following tests are taken from the Perl 5.005 test suite; some of them/
2378
/are compatible with 5.004, but I'd rather not have to sort them out./
2720
/[a-zA-Z_][a-zA-Z0-9_]*/
2723
/^a(bc+|b[eh])g|.h$/
2726
/(bc+d$|ef*g.|h?i(j|k))/
2734
/((((((((((a))))))))))/
2737
/((((((((((a))))))))))\10/
2740
/(((((((((a)))))))))/
2743
/multiple words of text/
2749
multiple words, yeah
2790
bbaababbabaaaaabbaaaabba
3057
/[a-zA-Z_][a-zA-Z0-9_]*/i
3060
/^a(bc+|b[eh])g|.h$/i
3063
/(bc+d$|ef*g.|h?i(j|k))/i
3072
/((((((((((a))))))))))/i
3075
/((((((((((a))))))))))\10/i
3078
/(((((((((a)))))))))/i
3081
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3084
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3087
/multiple words of text/i
3093
MULTIPLE WORDS, YEAH
3143
/a(?:b|c|d){4,5}(.)/
3146
/a(?:b|c|d){4,5}?(.)/
3152
/a(?:b|c|d){6,7}(.)/
3155
/a(?:b|c|d){6,7}?(.)/
3158
/a(?:b|c|d){5,6}(.)/
3161
/a(?:b|c|d){5,6}?(.)/
3164
/a(?:b|c|d){5,7}(.)/
3167
/a(?:b|c|d){5,7}?(.)/
3170
/a(?:b|(c|e){1,2}?|d)+?(.)/
3195
/(?:(f)(o)(o)|(b)(a)(r))*/
3215
/^(?:b|a(?=(.)))*\1/
3346
/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3349
/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3350
caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3365
/^a (?#xxx) (?#yyy) {3}c/x
3389
/((?s)^a(.))((?m)^b$)/
3446
/^(\()?blah(?(1)(\)))$/
3454
/^(\(+)?blah(?(1)(\)))$/
3533
/((?>[^()]+)|\([^()]*\))+/
3553
/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
3573
the.quick.brown.fox-
3574
the.quick.brown.fox.
3575
the.quick.brown.fox_
3576
the.quick.brown.fox+
3578
/(?>.*)(?<=(abcd|wxyz))/
3582
a rather long string that doesn't end with one of them
3584
/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3585
word cat dog elephant mussel cow horse canary baboon snake shark otherword
3586
word cat dog elephant mussel cow horse canary baboon snake shark
3588
/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3589
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
3591
/(?<=\d{3}(?!999))foo/
3597
/(?<=(?!...999)\d{3})foo/
3603
/(?<=\d{3}(?!999)...)foo/
3609
/(?<=\d{3}...)(?<!999)foo/
3615
/<a[\s]+href[\s]*=[\s]* # find <a href=
3616
([\"\'])? # find single or double quote
3617
(?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
3618
# quote, otherwise match up to next space
3621
<a href=\"abcd xyz pqr\" cats
3622
<a href=\'abcd xyz pqr\' cats
3624
/<a\s+href\s*=\s* # find <a href=
3625
(["'])? # find single or double quote
3626
(?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
3627
# quote, otherwise match up to next space
3630
<a href=\"abcd xyz pqr\" cats
3631
<a href = \'abcd xyz pqr\' cats
3633
/<a\s+href(?>\s*)=(?>\s*) # find <a href=
3634
(["'])? # find single or double quote
3635
(?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
3636
# quote, otherwise match up to next space
3639
<a href=\"abcd xyz pqr\" cats
3640
<a href = \'abcd xyz pqr\' cats
3675
> \x09\x0a\x0c\x0d\x0b<
3678
> \x09\x0a\x0c\x0d\x0b<
3681
> \x09\x0a\x0c\x0d\x0b<
3684
> \x09\x0a\x0c\x0d\x0b<
3709
abc#not comment\n literal
3714
abc#not comment\n literal
3718
literal\E #more comment
3720
abc#not comment\n literal
3724
literal\E #more comment/x
3725
abc#not comment\n literal
3749
/((?x)x y z | a b c)/
3779
/-- This tests for an IPv6 address in the form where it can have up to --/
3780
/-- eight components, one and only one of which is empty. This must be --/
3781
/-- an internal component. --/
3783
/^(?!:) # colon disallowed at start
3785
(?: [0-9a-f]{1,4} | # 1-4 hex digits or
3786
(?(1)0 | () ) ) # if null previously matched, fail; else null
3787
: # followed by colon
3788
){1,7} # end item; 1-7 of them required
3789
[0-9a-f]{1,4} $ # final hex number at end of string
3790
(?(1)|.) # check that there was an empty component
3794
a123:b342::324e:abcd
3795
a123:ddde:b342::324e:abcd
3796
a123:ddde:b342::324e:dcba:abcd
3797
a123:ddde:9999:b342::324e:dcba:abcd
3800
a123:bce:ddde:9999:b342::324e:dcba:abcd
3801
a123::9999:b342::324e:dcba:abcd
3825
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3827
/(?i)reg(?:ul(?:[a�]|ae)r|ex)/
3842
/ End of testinput1 /