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
1349 /([^.]*)\.([^:]*):[T ]+(.*)/
1350 track1.title:TBlah blah blah
1352 /([^.]*)\.([^:]*):[T ]+(.*)/i
1353 track1.title:TBlah blah blah
1355 /([^.]*)\.([^:]*):[t ]+(.*)/i
1356 track1.title:TBlah blah blah
1496 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1499 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1523 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1591 /\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/
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
1594 /P[^*]TAIRE[^*]{1,6}?LL/
1595 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1597 /P[^*]TAIRE[^*]{1,}?LL/
1598 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1605 /(\.\d\d((?=0)|\d(?=\d)))/
1615 Food is on the foo table
1618 The food is under the bar in the barn.
1621 The food is under the bar in the barn.
1624 I have 2 numbers: 53147
1627 I have 2 numbers: 53147
1630 I have 2 numbers: 53147
1633 I have 2 numbers: 53147
1636 I have 2 numbers: 53147
1639 I have 2 numbers: 53147
1642 I have 2 numbers: 53147
1645 I have 2 numbers: 53147
1650 /^(\D*)(?=\d)(?!123)/
1678 /\d\d\/\d\d\/\d\d\d\d/
1681 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
1682 word cat dog elephant mussel cow horse canary baboon snake shark otherword
1683 word cat dog elephant mussel cow horse canary baboon snake shark
1685 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
1686 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
1767 borfle\nbib.gif\nno\n
1770 borfle\nbib.gif\nno\n
1773 borfle\nbib.gif\nno\n
1776 borfle\nbib.gif\nno\n
1831 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
1834 /^\d\d\d\d\d\d\d\d\d\d\d\d/
1837 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
1849 /^[abcdefghijklmnopqrstuvwxy0123456789]/
1882 the \"quick\" brown fox
1883 \"the \\\"quick\\\" brown fox\"
1897 /<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
1898 <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>
1981 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
1984 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
1986 /(?>(\.\d\d[1-9]?))\d+/
1992 /^((?>\w+)|(?>\s+))*$/
1993 now is the time for all good men to come to the aid of the party
1995 this is not a line with only words and spaces!
2021 /((?>[^()]+)|\([^()]*\))+/
2024 /\(((?>[^()]+)|\([^()]+\))+\)/
2028 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2044 /(a b(?x)c d (?-x)e f)/
2082 /(?s-i:more.*than).*million/i
2085 more \n than Million
2088 more \n than \n million
2090 /(?:(?s-i)more.*than).*million/i
2093 more \n than Million
2096 more \n than \n million
2115 /(?<=a(?i)b)(\w\w)c/
2123 /(?:(a)|b)(?(1)A|B)/
2137 /^(?(?=abc)\w{3}:|\d\d)$/
2144 /^(?(?!abc)\d\d|\w{3}:)$/
2151 /(?(?<=foo)bar|cat)/
2159 /(?(?<!foo)cat|bar)/
2167 /( \( )? [^()]+ (?(1) \) |) /x
2170 the quick (abcd) fox
2173 /( \( )? [^()]+ (?(1) \) ) /x
2176 the quick (abcd) fox
2196 /((?i)blah)\s+(?i:\1)/
2268 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
2281 /(?i:saturday|sunday)/
2301 /^([ab](?i)[cd]|[ef])/
2312 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2329 /(?<=(?<!foo)bar)baz/
2337 /The case of aaaaaa is missed out below because I think Perl 5.005_02 gets/
2338 /it wrong; it sets $1 to aaa rather than aa. Compare the following test,/
2339 /where it does set $1 to aa when matching aaaaaa./
2358 /^(a\1?)(a\1?)(a\2?)(a\3?)$/
2376 /The following tests are taken from the Perl 5.005 test suite; some of them/
2377 /are compatible with 5.004, but I'd rather not have to sort them out./
2719 /[a-zA-Z_][a-zA-Z0-9_]*/
2722 /^a(bc+|b[eh])g|.h$/
2725 /(bc+d$|ef*g.|h?i(j|k))/
2733 /((((((((((a))))))))))/
2736 /((((((((((a))))))))))\10/
2739 /(((((((((a)))))))))/
2742 /multiple words of text/
2748 multiple words, yeah
2789 bbaababbabaaaaabbaaaabba
3056 /[a-zA-Z_][a-zA-Z0-9_]*/i
3059 /^a(bc+|b[eh])g|.h$/i
3062 /(bc+d$|ef*g.|h?i(j|k))/i
3071 /((((((((((a))))))))))/i
3074 /((((((((((a))))))))))\10/i
3077 /(((((((((a)))))))))/i
3080 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3083 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3086 /multiple words of text/i
3092 MULTIPLE WORDS, YEAH
3142 /a(?:b|c|d){4,5}(.)/
3145 /a(?:b|c|d){4,5}?(.)/
3151 /a(?:b|c|d){6,7}(.)/
3154 /a(?:b|c|d){6,7}?(.)/
3157 /a(?:b|c|d){5,6}(.)/
3160 /a(?:b|c|d){5,6}?(.)/
3163 /a(?:b|c|d){5,7}(.)/
3166 /a(?:b|c|d){5,7}?(.)/
3169 /a(?:b|(c|e){1,2}?|d)+?(.)/
3194 /(?:(f)(o)(o)|(b)(a)(r))*/
3214 /^(?:b|a(?=(.)))*\1/
3345 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3348 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3349 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3364 /^a (?#xxx) (?#yyy) {3}c/x
3388 /((?s)^a(.))((?m)^b$)/
3445 /^(\()?blah(?(1)(\)))$/
3453 /^(\(+)?blah(?(1)(\)))$/
3532 /((?>[^()]+)|\([^()]*\))+/
3552 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
3572 the.quick.brown.fox-
3573 the.quick.brown.fox.
3574 the.quick.brown.fox_
3575 the.quick.brown.fox+
3577 /(?>.*)(?<=(abcd|wxyz))/
3581 a rather long string that doesn't end with one of them
3583 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3584 word cat dog elephant mussel cow horse canary baboon snake shark otherword
3585 word cat dog elephant mussel cow horse canary baboon snake shark
3587 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3588 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
3590 /(?<=\d{3}(?!999))foo/
3596 /(?<=(?!...999)\d{3})foo/
3602 /(?<=\d{3}(?!999)...)foo/
3608 /(?<=\d{3}...)(?<!999)foo/
3614 /<a[\s]+href[\s]*=[\s]* # find <a href=
3615 ([\"\'])? # find single or double quote
3616 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
3617 # quote, otherwise match up to next space
3620 <a href=\"abcd xyz pqr\" cats
3621 <a href=\'abcd xyz pqr\' cats
3623 /<a\s+href\s*=\s* # find <a href=
3624 (["'])? # find single or double quote
3625 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
3626 # quote, otherwise match up to next space
3629 <a href=\"abcd xyz pqr\" cats
3630 <a href = \'abcd xyz pqr\' cats
3632 /<a\s+href(?>\s*)=(?>\s*) # find <a href=
3633 (["'])? # find single or double quote
3634 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
3635 # quote, otherwise match up to next space
3638 <a href=\"abcd xyz pqr\" cats
3639 <a href = \'abcd xyz pqr\' cats
3674 > \x09\x0a\x0c\x0d\x0b<
3677 > \x09\x0a\x0c\x0d\x0b<
3680 > \x09\x0a\x0c\x0d\x0b<
3683 > \x09\x0a\x0c\x0d\x0b<
3708 abc#not comment\n literal
3713 abc#not comment\n literal
3717 literal\E #more comment
3719 abc#not comment\n literal
3723 literal\E #more comment/x
3724 abc#not comment\n literal
3748 /((?x)x y z | a b c)/
3778 /-- This tests for an IPv6 address in the form where it can have up to --/
3779 /-- eight components, one and only one of which is empty. This must be --/
3780 /-- an internal component. --/
3782 /^(?!:) # colon disallowed at start
3784 (?: [0-9a-f]{1,4} | # 1-4 hex digits or
3785 (?(1)0 | () ) ) # if null previously matched, fail; else null
3786 : # followed by colon
3787 ){1,7} # end item; 1-7 of them required
3788 [0-9a-f]{1,4} $ # final hex number at end of string
3789 (?(1)|.) # check that there was an empty component
3793 a123:b342::324e:abcd
3794 a123:ddde:b342::324e:abcd
3795 a123:ddde:b342::324e:dcba:abcd
3796 a123:ddde:9999:b342::324e:dcba:abcd
3799 a123:bce:ddde:9999:b342::324e:dcba:abcd
3800 a123::9999:b342::324e:dcba:abcd
3824 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3826 /(?i)reg(?:ul(?:[aä]|ae)r|ex)/
3841 / End of testinput1 /