/[pcre]/code/trunk/testdata/testinput8
ViewVC logotype

Contents of /code/trunk/testdata/testinput8

Parent Directory Parent Directory | Revision Log Revision Log


Revision 919 - (hide annotations) (download)
Fri Feb 17 11:48:02 2012 UTC (2 years, 9 months ago) by ph10
File size: 84093 byte(s)
Fix partial match issues with CRLF and \r, and update tests.

1 ph10 836 /-- This set of tests check the DFA matching functionality of pcre_dfa_exec().
2     The -dfa flag must be used with pcretest when running it. --/
3    
4     /abc/
5     abc
6    
7     /ab*c/
8     abc
9     abbbbc
10     ac
11    
12     /ab+c/
13     abc
14     abbbbbbc
15     *** Failers
16     ac
17 nigel 77 ab
18    
19 ph10 836 /a*/
20     a
21     aaaaaaaaaaaaaaaaa
22     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
23     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
24    
25     /(a|abcd|african)/
26     a
27     abcd
28     african
29    
30     /^abc/
31     abcdef
32     *** Failers
33     xyzabc
34     xyz\nabc
35    
36     /^abc/m
37     abcdef
38     xyz\nabc
39     *** Failers
40     xyzabc
41    
42     /\Aabc/
43     abcdef
44     *** Failers
45     xyzabc
46     xyz\nabc
47    
48     /\Aabc/m
49     abcdef
50     *** Failers
51     xyzabc
52     xyz\nabc
53    
54     /\Gabc/
55     abcdef
56     xyzabc\>3
57     *** Failers
58     xyzabc
59     xyzabc\>2
60    
61     /x\dy\Dz/
62     x9yzz
63     x0y+z
64     *** Failers
65     xyz
66     xxy0z
67    
68     /x\sy\Sz/
69     x yzz
70     x y+z
71     *** Failers
72     xyz
73     xxyyz
74    
75     /x\wy\Wz/
76     xxy+z
77     *** Failers
78     xxy0z
79     x+y+z
80    
81     /x.y/
82     x+y
83     x-y
84     *** Failers
85     x\ny
86    
87     /x.y/s
88     x+y
89     x-y
90     x\ny
91    
92     /(a.b(?s)c.d|x.y)p.q/
93     a+bc+dp+q
94     a+bc\ndp+q
95     x\nyp+q
96 nigel 77 *** Failers
97 ph10 836 a\nbc\ndp+q
98     a+bc\ndp\nq
99     x\nyp\nq
100    
101     /a\d\z/
102     ba0
103     *** Failers
104     ba0\n
105     ba0\ncd
106    
107     /a\d\z/m
108     ba0
109     *** Failers
110     ba0\n
111     ba0\ncd
112    
113     /a\d\Z/
114     ba0
115     ba0\n
116     *** Failers
117     ba0\ncd
118    
119     /a\d\Z/m
120     ba0
121     ba0\n
122     *** Failers
123     ba0\ncd
124    
125     /a\d$/
126     ba0
127     ba0\n
128     *** Failers
129     ba0\ncd
130    
131     /a\d$/m
132     ba0
133     ba0\n
134     ba0\ncd
135     *** Failers
136    
137     /abc/i
138     abc
139     aBc
140     ABC
141    
142     /[^a]/
143     abcd
144    
145     /ab?\w/
146     abz
147     abbz
148     azz
149    
150     /x{0,3}yz/
151     ayzq
152     axyzq
153     axxyz
154     axxxyzq
155     axxxxyzq
156     *** Failers
157     ax
158     axx
159    
160     /x{3}yz/
161     axxxyzq
162     axxxxyzq
163     *** Failers
164     ax
165     axx
166     ayzq
167     axyzq
168     axxyz
169    
170     /x{2,3}yz/
171     axxyz
172     axxxyzq
173     axxxxyzq
174     *** Failers
175     ax
176     axx
177     ayzq
178     axyzq
179    
180     /[^a]+/
181     bac
182     bcdefax
183     *** Failers
184     aaaaa
185    
186     /[^a]*/
187     bac
188     bcdefax
189     *** Failers
190     aaaaa
191    
192     /[^a]{3,5}/
193     xyz
194     awxyza
195     abcdefa
196     abcdefghijk
197     *** Failers
198     axya
199     axa
200     aaaaa
201    
202     /\d*/
203     1234b567
204     xyz
205    
206     /\D*/
207     a1234b567
208     xyz
209 nigel 77
210 ph10 836 /\d+/
211     ab1234c56
212     *** Failers
213     xyz
214    
215     /\D+/
216     ab123c56
217     *** Failers
218     789
219    
220     /\d?A/
221     045ABC
222     ABC
223     *** Failers
224     XYZ
225    
226     /\D?A/
227     ABC
228     BAC
229     9ABC
230     *** Failers
231    
232     /a+/
233     aaaa
234    
235     /^.*xyz/
236     xyz
237     ggggggggxyz
238    
239     /^.+xyz/
240     abcdxyz
241     axyz
242     *** Failers
243     xyz
244    
245     /^.?xyz/
246     xyz
247     cxyz
248    
249     /^\d{2,3}X/
250     12X
251     123X
252     *** Failers
253     X
254     1X
255     1234X
256    
257     /^[abcd]\d/
258     a45
259     b93
260     c99z
261     d04
262     *** Failers
263     e45
264     abcd
265     abcd1234
266     1234
267    
268     /^[abcd]*\d/
269     a45
270     b93
271     c99z
272     d04
273     abcd1234
274     1234
275     *** Failers
276     e45
277     abcd
278    
279     /^[abcd]+\d/
280     a45
281     b93
282     c99z
283     d04
284     abcd1234
285     *** Failers
286     1234
287     e45
288     abcd
289    
290     /^a+X/
291     aX
292     aaX
293    
294     /^[abcd]?\d/
295     a45
296     b93
297     c99z
298     d04
299     1234
300     *** Failers
301     abcd1234
302     e45
303    
304     /^[abcd]{2,3}\d/
305     ab45
306     bcd93
307     *** Failers
308     1234
309     a36
310     abcd1234
311     ee45
312    
313     /^(abc)*\d/
314     abc45
315     abcabcabc45
316     42xyz
317     *** Failers
318    
319     /^(abc)+\d/
320     abc45
321     abcabcabc45
322     *** Failers
323     42xyz
324    
325     /^(abc)?\d/
326     abc45
327     42xyz
328     *** Failers
329     abcabcabc45
330    
331     /^(abc){2,3}\d/
332     abcabc45
333     abcabcabc45
334     *** Failers
335     abcabcabcabc45
336     abc45
337     42xyz
338    
339     /1(abc|xyz)2(?1)3/
340     1abc2abc3456
341     1abc2xyz3456
342    
343     /^(a*\w|ab)=(a*\w|ab)/
344     ab=ab
345    
346     /^(a*\w|ab)=(?1)/
347     ab=ab
348    
349     /^([^()]|\((?1)*\))*$/
350     abc
351     a(b)c
352     a(b(c))d
353     *** Failers)
354     a(b(c)d
355    
356     /^>abc>([^()]|\((?1)*\))*<xyz<$/
357     >abc>123<xyz<
358     >abc>1(2)3<xyz<
359     >abc>(1(2)3)<xyz<
360    
361     /^(?>a*)\d/
362     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
363 nigel 77 *** Failers
364 ph10 836 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
365    
366     /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
367     <>
368     <abcd>
369     <abc <123> hij>
370     <abc <def> hij>
371     <abc<>def>
372     <abc<>
373     *** Failers
374     <abc
375    
376     /^(?(?=abc)\w{3}:|\d\d)$/
377     abc:
378     12
379     *** Failers
380     123
381     xyz
382    
383     /^(?(?!abc)\d\d|\w{3}:)$/
384     abc:
385     12
386     *** Failers
387     123
388     xyz
389    
390     /^(?=abc)\w{5}:$/
391     abcde:
392     *** Failers
393     abc..
394     123
395     vwxyz
396    
397     /^(?!abc)\d\d$/
398     12
399     *** Failers
400     abcde:
401     abc..
402     123
403     vwxyz
404    
405     /(?<=abc|xy)123/
406     abc12345
407     wxy123z
408     *** Failers
409     123abc
410    
411     /(?<!abc|xy)123/
412     123abc
413     mno123456
414     *** Failers
415     abc12345
416     wxy123z
417    
418     /abc(?C1)xyz/
419     abcxyz
420     123abcxyz999
421    
422     /(ab|cd){3,4}/C
423     ababab
424     abcdabcd
425     abcdcdcdcdcd
426    
427     /^abc/
428     abcdef
429     *** Failers
430     abcdef\B
431    
432     /^(a*|xyz)/
433     bcd
434     aaabcd
435     xyz
436     xyz\N
437     *** Failers
438     bcd\N
439 nigel 77
440 ph10 836 /xyz$/
441     xyz
442     xyz\n
443 nigel 77 *** Failers
444 ph10 836 xyz\Z
445     xyz\n\Z
446    
447     /xyz$/m
448     xyz
449     xyz\n
450     abcxyz\npqr
451     abcxyz\npqr\Z
452     xyz\n\Z
453     *** Failers
454     xyz\Z
455 nigel 77
456 ph10 836 /\Gabc/
457     abcdef
458     defabcxyz\>3
459 nigel 77 *** Failers
460 ph10 836 defabcxyz
461    
462     /^abcdef/
463     ab\P
464     abcde\P
465     abcdef\P
466     *** Failers
467     abx\P
468    
469     /^a{2,4}\d+z/
470     a\P
471     aa\P
472     aa2\P
473     aaa\P
474     aaa23\P
475     aaaa12345\P
476     aa0z\P
477     aaaa4444444444444z\P
478     *** Failers
479     az\P
480     aaaaa\P
481     a56\P
482    
483     /^abcdef/
484     abc\P
485     def\R
486    
487     /(?<=foo)bar/
488     xyzfo\P
489     foob\P\>2
490     foobar...\R\P\>4
491     xyzfo\P
492     foobar\>2
493     *** Failers
494     xyzfo\P
495     obar\R
496    
497     /(ab*(cd|ef))+X/
498     adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
499     lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
500     cdabbbbbbbb\P\R\B\Z
501     efabbbbbbbbbbbbbbbb\P\R\B\Z
502     bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
503    
504     /(a|b)/SF>testsavedregex
505     <testsavedregex
506     abc
507     ** Failers
508     def
509 nigel 77
510 ph10 836 /the quick brown fox/
511     the quick brown fox
512     The quick brown FOX
513     What do you know about the quick brown fox?
514     What do you know about THE QUICK BROWN FOX?
515    
516     /The quick brown fox/i
517     the quick brown fox
518     The quick brown FOX
519     What do you know about the quick brown fox?
520     What do you know about THE QUICK BROWN FOX?
521    
522     /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
523     abcd\t\n\r\f\a\e9;\$\\?caxyz
524    
525     /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
526     abxyzpqrrrabbxyyyypqAzz
527     abxyzpqrrrabbxyyyypqAzz
528     aabxyzpqrrrabbxyyyypqAzz
529     aaabxyzpqrrrabbxyyyypqAzz
530     aaaabxyzpqrrrabbxyyyypqAzz
531     abcxyzpqrrrabbxyyyypqAzz
532     aabcxyzpqrrrabbxyyyypqAzz
533     aaabcxyzpqrrrabbxyyyypAzz
534     aaabcxyzpqrrrabbxyyyypqAzz
535     aaabcxyzpqrrrabbxyyyypqqAzz
536     aaabcxyzpqrrrabbxyyyypqqqAzz
537     aaabcxyzpqrrrabbxyyyypqqqqAzz
538     aaabcxyzpqrrrabbxyyyypqqqqqAzz
539     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
540     aaaabcxyzpqrrrabbxyyyypqAzz
541     abxyzzpqrrrabbxyyyypqAzz
542     aabxyzzzpqrrrabbxyyyypqAzz
543     aaabxyzzzzpqrrrabbxyyyypqAzz
544     aaaabxyzzzzpqrrrabbxyyyypqAzz
545     abcxyzzpqrrrabbxyyyypqAzz
546     aabcxyzzzpqrrrabbxyyyypqAzz
547     aaabcxyzzzzpqrrrabbxyyyypqAzz
548     aaaabcxyzzzzpqrrrabbxyyyypqAzz
549     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
550     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
551     aaabcxyzpqrrrabbxyyyypABzz
552     aaabcxyzpqrrrabbxyyyypABBzz
553     >>>aaabxyzpqrrrabbxyyyypqAzz
554     >aaaabxyzpqrrrabbxyyyypqAzz
555     >>>>abcxyzpqrrrabbxyyyypqAzz
556 nigel 77 *** Failers
557 ph10 836 abxyzpqrrabbxyyyypqAzz
558     abxyzpqrrrrabbxyyyypqAzz
559     abxyzpqrrrabxyyyypqAzz
560     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
561     aaaabcxyzzzzpqrrrabbbxyyypqAzz
562     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
563    
564     /^(abc){1,2}zz/
565     abczz
566     abcabczz
567     *** Failers
568     zz
569     abcabcabczz
570     >>abczz
571    
572     /^(b+?|a){1,2}?c/
573     bc
574     bbc
575     bbbc
576     bac
577     bbac
578     aac
579     abbbbbbbbbbbc
580     bbbbbbbbbbbac
581     *** Failers
582     aaac
583     abbbbbbbbbbbac
584    
585     /^(b+|a){1,2}c/
586     bc
587     bbc
588     bbbc
589     bac
590     bbac
591     aac
592     abbbbbbbbbbbc
593     bbbbbbbbbbbac
594     *** Failers
595     aaac
596     abbbbbbbbbbbac
597    
598     /^(b+|a){1,2}?bc/
599     bbc
600    
601     /^(b*|ba){1,2}?bc/
602     babc
603     bbabc
604     bababc
605     *** Failers
606     bababbc
607     babababc
608    
609     /^(ba|b*){1,2}?bc/
610     babc
611     bbabc
612     bababc
613     *** Failers
614     bababbc
615     babababc
616    
617     /^\ca\cA\c[\c{\c:/
618     \x01\x01\e;z
619    
620     /^[ab\]cde]/
621     athing
622     bthing
623     ]thing
624     cthing
625     dthing
626     ething
627     *** Failers
628     fthing
629     [thing
630     \\thing
631    
632     /^[]cde]/
633     ]thing
634     cthing
635     dthing
636     ething
637     *** Failers
638     athing
639     fthing
640    
641     /^[^ab\]cde]/
642     fthing
643     [thing
644     \\thing
645     *** Failers
646     athing
647     bthing
648     ]thing
649     cthing
650     dthing
651     ething
652    
653     /^[^]cde]/
654     athing
655     fthing
656     *** Failers
657     ]thing
658     cthing
659     dthing
660     ething
661    
662     /^\/
663    
664    
665     /^/
666    
667    
668     /^[0-9]+$/
669     0
670     1
671     2
672     3
673     4
674     5
675     6
676     7
677     8
678     9
679     10
680     100
681     *** Failers
682     abc
683    
684     /^.*nter/
685     enter
686     inter
687     uponter
688    
689     /^xxx[0-9]+$/
690     xxx0
691     xxx1234
692     *** Failers
693     xxx
694    
695     /^.+[0-9][0-9][0-9]$/
696     x123
697     xx123
698     123456
699     *** Failers
700     123
701     x1234
702    
703     /^.+?[0-9][0-9][0-9]$/
704     x123
705     xx123
706     123456
707     *** Failers
708     123
709     x1234
710    
711     /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
712     abc!pqr=apquxz.ixr.zzz.ac.uk
713     *** Failers
714     !pqr=apquxz.ixr.zzz.ac.uk
715     abc!=apquxz.ixr.zzz.ac.uk
716     abc!pqr=apquxz:ixr.zzz.ac.uk
717     abc!pqr=apquxz.ixr.zzz.ac.ukk
718    
719     /:/
720     Well, we need a colon: somewhere
721     *** Fail if we don't
722    
723     /([\da-f:]+)$/i
724     0abc
725     abc
726     fed
727     E
728     ::
729     5f03:12C0::932e
730     fed def
731     Any old stuff
732     *** Failers
733     0zzz
734     gzzz
735     fed\x20
736     Any old rubbish
737    
738     /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
739     .1.2.3
740     A.12.123.0
741     *** Failers
742     .1.2.3333
743     1.2.3
744     1234.2.3
745    
746     /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
747     1 IN SOA non-sp1 non-sp2(
748     1 IN SOA non-sp1 non-sp2 (
749     *** Failers
750     1IN SOA non-sp1 non-sp2(
751    
752     /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
753     a.
754     Z.
755     2.
756     ab-c.pq-r.
757     sxk.zzz.ac.uk.
758     x-.y-.
759     *** Failers
760     -abc.peq.
761    
762     /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
763     *.a
764     *.b0-a
765     *.c3-b.c
766     *.c-a.b-c
767     *** Failers
768     *.0
769     *.a-
770     *.a-b.c-
771     *.c-a.0-c
772    
773     /^(?=ab(de))(abd)(e)/
774     abde
775    
776     /^(?!(ab)de|x)(abd)(f)/
777     abdf
778    
779     /^(?=(ab(cd)))(ab)/
780 nigel 77 abcd
781    
782 ph10 836 /^[\da-f](\.[\da-f])*$/i
783     a.b.c.d
784     A.B.C.D
785     a.b.c.1.2.3.C
786    
787     /^\".*\"\s*(;.*)?$/
788     \"1234\"
789     \"abcd\" ;
790     \"\" ; rhubarb
791 nigel 77 *** Failers
792 ph10 836 \"1234\" : things
793 nigel 77
794 ph10 836 /^$/
795     \
796     *** Failers
797 nigel 77
798 ph10 836 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
799     ab c
800 nigel 77 *** Failers
801 ph10 836 abc
802     ab cde
803 nigel 77
804 ph10 836 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
805     ab c
806 nigel 77 *** Failers
807 ph10 836 abc
808     ab cde
809 nigel 77
810 ph10 836 /^ a\ b[c ]d $/x
811     a bcd
812     a b d
813     *** Failers
814     abcd
815     ab d
816 nigel 77
817 ph10 836 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
818     abcdefhijklm
819 nigel 77
820 ph10 836 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
821     abcdefhijklm
822 nigel 77
823 ph10 836 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
824     a+ Z0+\x08\n\x1d\x12
825 nigel 77
826 ph10 836 /^[.^$|()*+?{,}]+/
827     .^\$(*+)|{?,?}
828 nigel 77
829 ph10 836 /^a*\w/
830     z
831     az
832     aaaz
833     a
834     aa
835     aaaa
836     a+
837     aa+
838 nigel 77
839 ph10 836 /^a*?\w/
840     z
841     az
842     aaaz
843     a
844     aa
845     aaaa
846     a+
847     aa+
848 nigel 77
849 ph10 836 /^a+\w/
850     az
851     aaaz
852     aa
853     aaaa
854     aa+
855 nigel 77
856 ph10 836 /^a+?\w/
857     az
858     aaaz
859     aa
860     aaaa
861     aa+
862 nigel 77
863 ph10 836 /^\d{8}\w{2,}/
864     1234567890
865     12345678ab
866     12345678__
867     *** Failers
868     1234567
869 nigel 77
870 ph10 836 /^[aeiou\d]{4,5}$/
871     uoie
872     1234
873     12345
874     aaaaa
875 nigel 77 *** Failers
876 ph10 836 123456
877 nigel 77
878 ph10 836 /^[aeiou\d]{4,5}?/
879     uoie
880     1234
881     12345
882     aaaaa
883     123456
884    
885     /^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]/
886     From abcd Mon Sep 01 12:33:02 1997
887    
888     /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
889     From abcd Mon Sep 01 12:33:02 1997
890     From abcd Mon Sep 1 12:33:02 1997
891 nigel 77 *** Failers
892 ph10 836 From abcd Sep 01 12:33:02 1997
893 nigel 77
894 ph10 836 /^12.34/s
895     12\n34
896     12\r34
897    
898     /\w+(?=\t)/
899     the quick brown\t fox
900    
901     /foo(?!bar)(.*)/
902     foobar is foolish see?
903    
904     /(?:(?!foo)...|^.{0,2})bar(.*)/
905     foobar crowbar etc
906     barrel
907     2barrel
908     A barrel
909    
910     /^(\D*)(?=\d)(?!123)/
911     abc456
912 nigel 77 *** Failers
913 ph10 836 abc123
914 nigel 77
915 ph10 836 /^1234(?# test newlines
916     inside)/
917     1234
918    
919     /^1234 #comment in extended re
920     /x
921     1234
922    
923     /#rhubarb
924     abcd/x
925     abcd
926    
927     /^abcd#rhubarb/x
928     abcd
929    
930     /(?!^)abc/
931     the abc
932 nigel 77 *** Failers
933 ph10 836 abc
934 nigel 77
935 ph10 836 /(?=^)abc/
936     abc
937 nigel 77 *** Failers
938 ph10 836 the abc
939 nigel 77
940 ph10 836 /^[ab]{1,3}(ab*|b)/
941     aabbbbb
942    
943     /^[ab]{1,3}?(ab*|b)/
944     aabbbbb
945    
946     /^[ab]{1,3}?(ab*?|b)/
947     aabbbbb
948    
949     /^[ab]{1,3}(ab*?|b)/
950     aabbbbb
951    
952     / (?: [\040\t] | \(
953     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
954     \) )* # optional leading comment
955     (?: (?:
956     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
957     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
958     |
959     " (?: # opening quote...
960     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
961     | # or
962     \\ [^\x80-\xff] # Escaped something (something != CR)
963     )* " # closing quote
964     ) # initial word
965     (?: (?: [\040\t] | \(
966     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
967     \) )* \. (?: [\040\t] | \(
968     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
969     \) )* (?:
970     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
971     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
972     |
973     " (?: # opening quote...
974     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
975     | # or
976     \\ [^\x80-\xff] # Escaped something (something != CR)
977     )* " # closing quote
978     ) )* # further okay, if led by a period
979     (?: [\040\t] | \(
980     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
981     \) )* @ (?: [\040\t] | \(
982     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
983     \) )* (?:
984     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
985     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
986     | \[ # [
987     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
988     \] # ]
989     ) # initial subdomain
990     (?: #
991     (?: [\040\t] | \(
992     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
993     \) )* \. # if led by a period...
994     (?: [\040\t] | \(
995     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
996     \) )* (?:
997     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
998     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
999     | \[ # [
1000     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1001     \] # ]
1002     ) # ...further okay
1003     )*
1004     # address
1005     | # or
1006     (?:
1007     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1008     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1009     |
1010     " (?: # opening quote...
1011     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1012     | # or
1013     \\ [^\x80-\xff] # Escaped something (something != CR)
1014     )* " # closing quote
1015     ) # one word, optionally followed by....
1016     (?:
1017     [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
1018     \(
1019     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1020     \) | # comments, or...
1021    
1022     " (?: # opening quote...
1023     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1024     | # or
1025     \\ [^\x80-\xff] # Escaped something (something != CR)
1026     )* " # closing quote
1027     # quoted strings
1028     )*
1029     < (?: [\040\t] | \(
1030     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1031     \) )* # leading <
1032     (?: @ (?: [\040\t] | \(
1033     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1034     \) )* (?:
1035     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1036     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1037     | \[ # [
1038     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1039     \] # ]
1040     ) # initial subdomain
1041     (?: #
1042     (?: [\040\t] | \(
1043     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1044     \) )* \. # if led by a period...
1045     (?: [\040\t] | \(
1046     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1047     \) )* (?:
1048     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1049     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1050     | \[ # [
1051     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1052     \] # ]
1053     ) # ...further okay
1054     )*
1055    
1056     (?: (?: [\040\t] | \(
1057     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1058     \) )* , (?: [\040\t] | \(
1059     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1060     \) )* @ (?: [\040\t] | \(
1061     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1062     \) )* (?:
1063     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1064     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1065     | \[ # [
1066     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1067     \] # ]
1068     ) # initial subdomain
1069     (?: #
1070     (?: [\040\t] | \(
1071     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1072     \) )* \. # if led by a period...
1073     (?: [\040\t] | \(
1074     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1075     \) )* (?:
1076     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1077     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1078     | \[ # [
1079     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1080     \] # ]
1081     ) # ...further okay
1082     )*
1083     )* # further okay, if led by comma
1084     : # closing colon
1085     (?: [\040\t] | \(
1086     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1087     \) )* )? # optional route
1088     (?:
1089     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1090     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1091     |
1092     " (?: # opening quote...
1093     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1094     | # or
1095     \\ [^\x80-\xff] # Escaped something (something != CR)
1096     )* " # closing quote
1097     ) # initial word
1098     (?: (?: [\040\t] | \(
1099     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1100     \) )* \. (?: [\040\t] | \(
1101     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1102     \) )* (?:
1103     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1104     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1105     |
1106     " (?: # opening quote...
1107     [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1108     | # or
1109     \\ [^\x80-\xff] # Escaped something (something != CR)
1110     )* " # closing quote
1111     ) )* # further okay, if led by a period
1112     (?: [\040\t] | \(
1113     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1114     \) )* @ (?: [\040\t] | \(
1115     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1116     \) )* (?:
1117     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1118     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1119     | \[ # [
1120     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1121     \] # ]
1122     ) # initial subdomain
1123     (?: #
1124     (?: [\040\t] | \(
1125     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1126     \) )* \. # if led by a period...
1127     (?: [\040\t] | \(
1128     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1129     \) )* (?:
1130     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1131     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1132     | \[ # [
1133     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1134     \] # ]
1135     ) # ...further okay
1136     )*
1137     # address spec
1138     (?: [\040\t] | \(
1139     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1140     \) )* > # trailing >
1141     # name and address
1142     ) (?: [\040\t] | \(
1143     (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1144     \) )* # optional trailing comment
1145     /x
1146     Alan Other <user\@dom.ain>
1147     <user\@dom.ain>
1148     user\@dom.ain
1149     \"A. Other\" <user.1234\@dom.ain> (a comment)
1150     A. Other <user.1234\@dom.ain> (a comment)
1151     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1152     A missing angle <user\@some.where
1153 nigel 77 *** Failers
1154 ph10 836 The quick brown fox
1155 nigel 77
1156 ph10 836 /[\040\t]* # Nab whitespace.
1157     (?:
1158     \( # (
1159     [^\\\x80-\xff\n\015()] * # normal*
1160     (?: # (
1161     (?: \\ [^\x80-\xff] |
1162     \( # (
1163     [^\\\x80-\xff\n\015()] * # normal*
1164     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1165     \) # )
1166     ) # special
1167     [^\\\x80-\xff\n\015()] * # normal*
1168     )* # )*
1169     \) # )
1170     [\040\t]* )* # If comment found, allow more spaces.
1171     # optional leading comment
1172     (?:
1173     (?:
1174     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1175     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1176     # Atom
1177     | # or
1178     " # "
1179     [^\\\x80-\xff\n\015"] * # normal
1180     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1181     " # "
1182     # Quoted string
1183     )
1184     [\040\t]* # Nab whitespace.
1185     (?:
1186     \( # (
1187     [^\\\x80-\xff\n\015()] * # normal*
1188     (?: # (
1189     (?: \\ [^\x80-\xff] |
1190     \( # (
1191     [^\\\x80-\xff\n\015()] * # normal*
1192     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1193     \) # )
1194     ) # special
1195     [^\\\x80-\xff\n\015()] * # normal*
1196     )* # )*
1197     \) # )
1198     [\040\t]* )* # If comment found, allow more spaces.
1199     (?:
1200     \.
1201     [\040\t]* # Nab whitespace.
1202     (?:
1203     \( # (
1204     [^\\\x80-\xff\n\015()] * # normal*
1205     (?: # (
1206     (?: \\ [^\x80-\xff] |
1207     \( # (
1208     [^\\\x80-\xff\n\015()] * # normal*
1209     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1210     \) # )
1211     ) # special
1212     [^\\\x80-\xff\n\015()] * # normal*
1213     )* # )*
1214     \) # )
1215     [\040\t]* )* # If comment found, allow more spaces.
1216     (?:
1217     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1218     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1219     # Atom
1220     | # or
1221     " # "
1222     [^\\\x80-\xff\n\015"] * # normal
1223     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1224     " # "
1225     # Quoted string
1226     )
1227     [\040\t]* # Nab whitespace.
1228     (?:
1229     \( # (
1230     [^\\\x80-\xff\n\015()] * # normal*
1231     (?: # (
1232     (?: \\ [^\x80-\xff] |
1233     \( # (
1234     [^\\\x80-\xff\n\015()] * # normal*
1235     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1236     \) # )
1237     ) # special
1238     [^\\\x80-\xff\n\015()] * # normal*
1239     )* # )*
1240     \) # )
1241     [\040\t]* )* # If comment found, allow more spaces.
1242     # additional words
1243     )*
1244     @
1245     [\040\t]* # Nab whitespace.
1246     (?:
1247     \( # (
1248     [^\\\x80-\xff\n\015()] * # normal*
1249     (?: # (
1250     (?: \\ [^\x80-\xff] |
1251     \( # (
1252     [^\\\x80-\xff\n\015()] * # normal*
1253     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1254     \) # )
1255     ) # special
1256     [^\\\x80-\xff\n\015()] * # normal*
1257     )* # )*
1258     \) # )
1259     [\040\t]* )* # If comment found, allow more spaces.
1260     (?:
1261     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1262     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1263     |
1264     \[ # [
1265     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1266     \] # ]
1267     )
1268     [\040\t]* # Nab whitespace.
1269     (?:
1270     \( # (
1271     [^\\\x80-\xff\n\015()] * # normal*
1272     (?: # (
1273     (?: \\ [^\x80-\xff] |
1274     \( # (
1275     [^\\\x80-\xff\n\015()] * # normal*
1276     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1277     \) # )
1278     ) # special
1279     [^\\\x80-\xff\n\015()] * # normal*
1280     )* # )*
1281     \) # )
1282     [\040\t]* )* # If comment found, allow more spaces.
1283     # optional trailing comments
1284     (?:
1285     \.
1286     [\040\t]* # Nab whitespace.
1287     (?:
1288     \( # (
1289     [^\\\x80-\xff\n\015()] * # normal*
1290     (?: # (
1291     (?: \\ [^\x80-\xff] |
1292     \( # (
1293     [^\\\x80-\xff\n\015()] * # normal*
1294     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1295     \) # )
1296     ) # special
1297     [^\\\x80-\xff\n\015()] * # normal*
1298     )* # )*
1299     \) # )
1300     [\040\t]* )* # If comment found, allow more spaces.
1301     (?:
1302     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1303     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1304     |
1305     \[ # [
1306     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1307     \] # ]
1308     )
1309     [\040\t]* # Nab whitespace.
1310     (?:
1311     \( # (
1312     [^\\\x80-\xff\n\015()] * # normal*
1313     (?: # (
1314     (?: \\ [^\x80-\xff] |
1315     \( # (
1316     [^\\\x80-\xff\n\015()] * # normal*
1317     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1318     \) # )
1319     ) # special
1320     [^\\\x80-\xff\n\015()] * # normal*
1321     )* # )*
1322     \) # )
1323     [\040\t]* )* # If comment found, allow more spaces.
1324     # optional trailing comments
1325     )*
1326     # address
1327     | # or
1328     (?:
1329     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1330     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1331     # Atom
1332     | # or
1333     " # "
1334     [^\\\x80-\xff\n\015"] * # normal
1335     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1336     " # "
1337     # Quoted string
1338     )
1339     # leading word
1340     [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
1341     (?:
1342     (?:
1343     \( # (
1344     [^\\\x80-\xff\n\015()] * # normal*
1345     (?: # (
1346     (?: \\ [^\x80-\xff] |
1347     \( # (
1348     [^\\\x80-\xff\n\015()] * # normal*
1349     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1350     \) # )
1351     ) # special
1352     [^\\\x80-\xff\n\015()] * # normal*
1353     )* # )*
1354     \) # )
1355     |
1356     " # "
1357     [^\\\x80-\xff\n\015"] * # normal
1358     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1359     " # "
1360     ) # "special" comment or quoted string
1361     [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
1362     )*
1363     <
1364     [\040\t]* # Nab whitespace.
1365     (?:
1366     \( # (
1367     [^\\\x80-\xff\n\015()] * # normal*
1368     (?: # (
1369     (?: \\ [^\x80-\xff] |
1370     \( # (
1371     [^\\\x80-\xff\n\015()] * # normal*
1372     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1373     \) # )
1374     ) # special
1375     [^\\\x80-\xff\n\015()] * # normal*
1376     )* # )*
1377     \) # )
1378     [\040\t]* )* # If comment found, allow more spaces.
1379     # <
1380     (?:
1381     @
1382     [\040\t]* # Nab whitespace.
1383     (?:
1384     \( # (
1385     [^\\\x80-\xff\n\015()] * # normal*
1386     (?: # (
1387     (?: \\ [^\x80-\xff] |
1388     \( # (
1389     [^\\\x80-\xff\n\015()] * # normal*
1390     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1391     \) # )
1392     ) # special
1393     [^\\\x80-\xff\n\015()] * # normal*
1394     )* # )*
1395     \) # )
1396     [\040\t]* )* # If comment found, allow more spaces.
1397     (?:
1398     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1399     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1400     |
1401     \[ # [
1402     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1403     \] # ]
1404     )
1405     [\040\t]* # Nab whitespace.
1406     (?:
1407     \( # (
1408     [^\\\x80-\xff\n\015()] * # normal*
1409     (?: # (
1410     (?: \\ [^\x80-\xff] |
1411     \( # (
1412     [^\\\x80-\xff\n\015()] * # normal*
1413     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1414     \) # )
1415     ) # special
1416     [^\\\x80-\xff\n\015()] * # normal*
1417     )* # )*
1418     \) # )
1419     [\040\t]* )* # If comment found, allow more spaces.
1420     # optional trailing comments
1421     (?:
1422     \.
1423     [\040\t]* # Nab whitespace.
1424     (?:
1425     \( # (
1426     [^\\\x80-\xff\n\015()] * # normal*
1427     (?: # (
1428     (?: \\ [^\x80-\xff] |
1429     \( # (
1430     [^\\\x80-\xff\n\015()] * # normal*
1431     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1432     \) # )
1433     ) # special
1434     [^\\\x80-\xff\n\015()] * # normal*
1435     )* # )*
1436     \) # )
1437     [\040\t]* )* # If comment found, allow more spaces.
1438     (?:
1439     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1440     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1441     |
1442     \[ # [
1443     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1444     \] # ]
1445     )
1446     [\040\t]* # Nab whitespace.
1447     (?:
1448     \( # (
1449     [^\\\x80-\xff\n\015()] * # normal*
1450     (?: # (
1451     (?: \\ [^\x80-\xff] |
1452     \( # (
1453     [^\\\x80-\xff\n\015()] * # normal*
1454     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1455     \) # )
1456     ) # special
1457     [^\\\x80-\xff\n\015()] * # normal*
1458     )* # )*
1459     \) # )
1460     [\040\t]* )* # If comment found, allow more spaces.
1461     # optional trailing comments
1462     )*
1463     (?: ,
1464     [\040\t]* # Nab whitespace.
1465     (?:
1466     \( # (
1467     [^\\\x80-\xff\n\015()] * # normal*
1468     (?: # (
1469     (?: \\ [^\x80-\xff] |
1470     \( # (
1471     [^\\\x80-\xff\n\015()] * # normal*
1472     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1473     \) # )
1474     ) # special
1475     [^\\\x80-\xff\n\015()] * # normal*
1476     )* # )*
1477     \) # )
1478     [\040\t]* )* # If comment found, allow more spaces.
1479     @
1480     [\040\t]* # Nab whitespace.
1481     (?:
1482     \( # (
1483     [^\\\x80-\xff\n\015()] * # normal*
1484     (?: # (
1485     (?: \\ [^\x80-\xff] |
1486     \( # (
1487     [^\\\x80-\xff\n\015()] * # normal*
1488     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1489     \) # )
1490     ) # special
1491     [^\\\x80-\xff\n\015()] * # normal*
1492     )* # )*
1493     \) # )
1494     [\040\t]* )* # If comment found, allow more spaces.
1495     (?:
1496     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1497     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1498     |
1499     \[ # [
1500     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1501     \] # ]
1502     )
1503     [\040\t]* # Nab whitespace.
1504     (?:
1505     \( # (
1506     [^\\\x80-\xff\n\015()] * # normal*
1507     (?: # (
1508     (?: \\ [^\x80-\xff] |
1509     \( # (
1510     [^\\\x80-\xff\n\015()] * # normal*
1511     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1512     \) # )
1513     ) # special
1514     [^\\\x80-\xff\n\015()] * # normal*
1515     )* # )*
1516     \) # )
1517     [\040\t]* )* # If comment found, allow more spaces.
1518     # optional trailing comments
1519     (?:
1520     \.
1521     [\040\t]* # Nab whitespace.
1522     (?:
1523     \( # (
1524     [^\\\x80-\xff\n\015()] * # normal*
1525     (?: # (
1526     (?: \\ [^\x80-\xff] |
1527     \( # (
1528     [^\\\x80-\xff\n\015()] * # normal*
1529     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1530     \) # )
1531     ) # special
1532     [^\\\x80-\xff\n\015()] * # normal*
1533     )* # )*
1534     \) # )
1535     [\040\t]* )* # If comment found, allow more spaces.
1536     (?:
1537     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1538     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1539     |
1540     \[ # [
1541     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1542     \] # ]
1543     )
1544     [\040\t]* # Nab whitespace.
1545     (?:
1546     \( # (
1547     [^\\\x80-\xff\n\015()] * # normal*
1548     (?: # (
1549     (?: \\ [^\x80-\xff] |
1550     \( # (
1551     [^\\\x80-\xff\n\015()] * # normal*
1552     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1553     \) # )
1554     ) # special
1555     [^\\\x80-\xff\n\015()] * # normal*
1556     )* # )*
1557     \) # )
1558     [\040\t]* )* # If comment found, allow more spaces.
1559     # optional trailing comments
1560     )*
1561     )* # additional domains
1562     :
1563     [\040\t]* # Nab whitespace.
1564     (?:
1565     \( # (
1566     [^\\\x80-\xff\n\015()] * # normal*
1567     (?: # (
1568     (?: \\ [^\x80-\xff] |
1569     \( # (
1570     [^\\\x80-\xff\n\015()] * # normal*
1571     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1572     \) # )
1573     ) # special
1574     [^\\\x80-\xff\n\015()] * # normal*
1575     )* # )*
1576     \) # )
1577     [\040\t]* )* # If comment found, allow more spaces.
1578     # optional trailing comments
1579     )? # optional route
1580     (?:
1581     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1582     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1583     # Atom
1584     | # or
1585     " # "
1586     [^\\\x80-\xff\n\015"] * # normal
1587     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1588     " # "
1589     # Quoted string
1590     )
1591     [\040\t]* # Nab whitespace.
1592     (?:
1593     \( # (
1594     [^\\\x80-\xff\n\015()] * # normal*
1595     (?: # (
1596     (?: \\ [^\x80-\xff] |
1597     \( # (
1598     [^\\\x80-\xff\n\015()] * # normal*
1599     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1600     \) # )
1601     ) # special
1602     [^\\\x80-\xff\n\015()] * # normal*
1603     )* # )*
1604     \) # )
1605     [\040\t]* )* # If comment found, allow more spaces.
1606     (?:
1607     \.
1608     [\040\t]* # Nab whitespace.
1609     (?:
1610     \( # (
1611     [^\\\x80-\xff\n\015()] * # normal*
1612     (?: # (
1613     (?: \\ [^\x80-\xff] |
1614     \( # (
1615     [^\\\x80-\xff\n\015()] * # normal*
1616     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1617     \) # )
1618     ) # special
1619     [^\\\x80-\xff\n\015()] * # normal*
1620     )* # )*
1621     \) # )
1622     [\040\t]* )* # If comment found, allow more spaces.
1623     (?:
1624     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1625     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1626     # Atom
1627     | # or
1628     " # "
1629     [^\\\x80-\xff\n\015"] * # normal
1630     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1631     " # "
1632     # Quoted string
1633     )
1634     [\040\t]* # Nab whitespace.
1635     (?:
1636     \( # (
1637     [^\\\x80-\xff\n\015()] * # normal*
1638     (?: # (
1639     (?: \\ [^\x80-\xff] |
1640     \( # (
1641     [^\\\x80-\xff\n\015()] * # normal*
1642     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1643     \) # )
1644     ) # special
1645     [^\\\x80-\xff\n\015()] * # normal*
1646     )* # )*
1647     \) # )
1648     [\040\t]* )* # If comment found, allow more spaces.
1649     # additional words
1650     )*
1651     @
1652     [\040\t]* # Nab whitespace.
1653     (?:
1654     \( # (
1655     [^\\\x80-\xff\n\015()] * # normal*
1656     (?: # (
1657     (?: \\ [^\x80-\xff] |
1658     \( # (
1659     [^\\\x80-\xff\n\015()] * # normal*
1660     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1661     \) # )
1662     ) # special
1663     [^\\\x80-\xff\n\015()] * # normal*
1664     )* # )*
1665     \) # )
1666     [\040\t]* )* # If comment found, allow more spaces.
1667     (?:
1668     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1669     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1670     |
1671     \[ # [
1672     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1673     \] # ]
1674     )
1675     [\040\t]* # Nab whitespace.
1676     (?:
1677     \( # (
1678     [^\\\x80-\xff\n\015()] * # normal*
1679     (?: # (
1680     (?: \\ [^\x80-\xff] |
1681     \( # (
1682     [^\\\x80-\xff\n\015()] * # normal*
1683     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1684     \) # )
1685     ) # special
1686     [^\\\x80-\xff\n\015()] * # normal*
1687     )* # )*
1688     \) # )
1689     [\040\t]* )* # If comment found, allow more spaces.
1690     # optional trailing comments
1691     (?:
1692     \.
1693     [\040\t]* # Nab whitespace.
1694     (?:
1695     \( # (
1696     [^\\\x80-\xff\n\015()] * # normal*
1697     (?: # (
1698     (?: \\ [^\x80-\xff] |
1699     \( # (
1700     [^\\\x80-\xff\n\015()] * # normal*
1701     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1702     \) # )
1703     ) # special
1704     [^\\\x80-\xff\n\015()] * # normal*
1705     )* # )*
1706     \) # )
1707     [\040\t]* )* # If comment found, allow more spaces.
1708     (?:
1709     [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1710     (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1711     |
1712     \[ # [
1713     (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1714     \] # ]
1715     )
1716     [\040\t]* # Nab whitespace.
1717     (?:
1718     \( # (
1719     [^\\\x80-\xff\n\015()] * # normal*
1720     (?: # (
1721     (?: \\ [^\x80-\xff] |
1722     \( # (
1723     [^\\\x80-\xff\n\015()] * # normal*
1724     (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1725     \) # )
1726     ) # special
1727     [^\\\x80-\xff\n\015()] * # normal*
1728     )* # )*
1729     \) # )
1730     [\040\t]* )* # If comment found, allow more spaces.
1731     # optional trailing comments
1732     )*
1733     # address spec
1734     > # >
1735     # name and address
1736     )
1737     /x
1738     Alan Other <user\@dom.ain>
1739     <user\@dom.ain>
1740     user\@dom.ain
1741     \"A. Other\" <user.1234\@dom.ain> (a comment)
1742     A. Other <user.1234\@dom.ain> (a comment)
1743     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1744     A missing angle <user\@some.where
1745     *** Failers
1746     The quick brown fox
1747 nigel 77
1748 ph10 836 /abc\0def\00pqr\000xyz\0000AB/
1749     abc\0def\00pqr\000xyz\0000AB
1750     abc456 abc\0def\00pqr\000xyz\0000ABCDE
1751 nigel 77
1752 ph10 836 /abc\x0def\x00pqr\x000xyz\x0000AB/
1753     abc\x0def\x00pqr\x000xyz\x0000AB
1754     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1755    
1756     /^[\000-\037]/
1757     \0A
1758     \01B
1759     \037C
1760    
1761     /\0*/
1762     \0\0\0\0
1763    
1764     /A\x0{2,3}Z/
1765     The A\x0\x0Z
1766     An A\0\x0\0Z
1767     *** Failers
1768     A\0Z
1769     A\0\x0\0\x0Z
1770    
1771     /^\s/
1772     \040abc
1773     \x0cabc
1774     \nabc
1775     \rabc
1776     \tabc
1777     *** Failers
1778     abc
1779    
1780     /^a b
1781     c/x
1782     abc
1783    
1784     /ab{1,3}bc/
1785     abbbbc
1786     abbbc
1787     abbc
1788     *** Failers
1789     abc
1790     abbbbbc
1791    
1792     /([^.]*)\.([^:]*):[T ]+(.*)/
1793     track1.title:TBlah blah blah
1794    
1795     /([^.]*)\.([^:]*):[T ]+(.*)/i
1796     track1.title:TBlah blah blah
1797    
1798     /([^.]*)\.([^:]*):[t ]+(.*)/i
1799     track1.title:TBlah blah blah
1800    
1801     /^[W-c]+$/
1802     WXY_^abc
1803     *** Failers
1804     wxy
1805    
1806     /^[W-c]+$/i
1807     WXY_^abc
1808     wxy_^ABC
1809    
1810     /^[\x3f-\x5F]+$/i
1811     WXY_^abc
1812     wxy_^ABC
1813    
1814     /^abc$/m
1815     abc
1816     qqq\nabc
1817     abc\nzzz
1818     qqq\nabc\nzzz
1819    
1820     /^abc$/
1821     abc
1822     *** Failers
1823     qqq\nabc
1824     abc\nzzz
1825     qqq\nabc\nzzz
1826    
1827     /\Aabc\Z/m
1828     abc
1829     abc\n
1830     *** Failers
1831     qqq\nabc
1832     abc\nzzz
1833     qqq\nabc\nzzz
1834 nigel 77
1835 ph10 836 /\A(.)*\Z/s
1836     abc\ndef
1837 nigel 77
1838 ph10 836 /\A(.)*\Z/m
1839     *** Failers
1840     abc\ndef
1841 nigel 77
1842 ph10 836 /(?:b)|(?::+)/
1843     b::c
1844     c::b
1845    
1846     /[-az]+/
1847     az-
1848 nigel 77 *** Failers
1849 ph10 836 b
1850 nigel 77
1851 ph10 836 /[az-]+/
1852     za-
1853     *** Failers
1854     b
1855    
1856     /[a\-z]+/
1857     a-z
1858     *** Failers
1859     b
1860    
1861     /[a-z]+/
1862     abcdxyz
1863    
1864     /[\d-]+/
1865     12-34
1866     *** Failers
1867     aaa
1868    
1869     /[\d-z]+/
1870     12-34z
1871     *** Failers
1872     aaa
1873    
1874     /\x5c/
1875     \\
1876    
1877     /\x20Z/
1878     the Zoo
1879     *** Failers
1880     Zulu
1881    
1882     /ab{3cd/
1883     ab{3cd
1884    
1885     /ab{3,cd/
1886     ab{3,cd
1887    
1888     /ab{3,4a}cd/
1889     ab{3,4a}cd
1890    
1891     /{4,5a}bc/
1892     {4,5a}bc
1893    
1894     /^a.b/<lf>
1895     a\rb
1896     *** Failers
1897     a\nb
1898    
1899     /abc$/
1900     abc
1901     abc\n
1902     *** Failers
1903     abc\ndef
1904    
1905     /(abc)\123/
1906     abc\x53
1907    
1908     /(abc)\223/
1909     abc\x93
1910    
1911     /(abc)\323/
1912     abc\xd3
1913    
1914     /(abc)\100/
1915     abc\x40
1916     abc\100
1917    
1918     /(abc)\1000/
1919     abc\x400
1920     abc\x40\x30
1921     abc\1000
1922     abc\100\x30
1923     abc\100\060
1924     abc\100\60
1925    
1926     /abc\81/
1927     abc\081
1928     abc\0\x38\x31
1929    
1930     /abc\91/
1931     abc\091
1932     abc\0\x39\x31
1933    
1934     /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1935     abcdefghijk\12S
1936    
1937     /ab\idef/
1938     abidef
1939    
1940     /a{0}bc/
1941     bc
1942    
1943     /(a|(bc)){0,0}?xyz/
1944     xyz
1945    
1946     /abc[\10]de/
1947     abc\010de
1948    
1949     /abc[\1]de/
1950     abc\1de
1951    
1952     /(abc)[\1]de/
1953     abc\1de
1954    
1955     /(?s)a.b/
1956     a\nb
1957    
1958     /^([^a])([^\b])([^c]*)([^d]{3,4})/
1959     baNOTccccd
1960     baNOTcccd
1961     baNOTccd
1962     bacccd
1963     *** Failers
1964     anything
1965     b\bc
1966     baccd
1967    
1968     /[^a]/
1969     Abc
1970    
1971     /[^a]/i
1972     Abc
1973    
1974     /[^a]+/
1975     AAAaAbc
1976    
1977     /[^a]+/i
1978     AAAaAbc
1979    
1980     /[^a]+/
1981     bbb\nccc
1982    
1983     /[^k]$/
1984     abc
1985     *** Failers
1986     abk
1987    
1988     /[^k]{2,3}$/
1989     abc
1990     kbc
1991     kabc
1992     *** Failers
1993     abk
1994     akb
1995     akk
1996    
1997     /^\d{8,}\@.+[^k]$/
1998     12345678\@a.b.c.d
1999     123456789\@x.y.z
2000     *** Failers
2001     12345678\@x.y.uk
2002     1234567\@a.b.c.d
2003    
2004     /[^a]/
2005     aaaabcd
2006     aaAabcd
2007    
2008     /[^a]/i
2009     aaaabcd
2010     aaAabcd
2011    
2012     /[^az]/
2013     aaaabcd
2014     aaAabcd
2015    
2016     /[^az]/i
2017     aaaabcd
2018     aaAabcd
2019    
2020     /\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/
2021     \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
2022    
2023     /P[^*]TAIRE[^*]{1,6}?LL/
2024     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2025    
2026     /P[^*]TAIRE[^*]{1,}?LL/
2027     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2028    
2029     /(\.\d\d[1-9]?)\d+/
2030     1.230003938
2031     1.875000282
2032     1.235
2033    
2034     /(\.\d\d((?=0)|\d(?=\d)))/
2035     1.230003938
2036     1.875000282
2037     *** Failers
2038     1.235
2039 nigel 77
2040 ph10 836 /a(?)b/
2041     ab
2042 nigel 77
2043 ph10 836 /\b(foo)\s+(\w+)/i
2044     Food is on the foo table
2045    
2046     /foo(.*)bar/
2047     The food is under the bar in the barn.
2048    
2049     /foo(.*?)bar/
2050     The food is under the bar in the barn.
2051 nigel 77
2052 ph10 836 /(.*)(\d*)/
2053     I have 2 numbers: 53147
2054    
2055     /(.*)(\d+)/
2056     I have 2 numbers: 53147
2057    
2058     /(.*?)(\d*)/
2059     I have 2 numbers: 53147
2060 nigel 77
2061 ph10 836 /(.*?)(\d+)/
2062     I have 2 numbers: 53147
2063    
2064     /(.*)(\d+)$/
2065     I have 2 numbers: 53147
2066    
2067     /(.*?)(\d+)$/
2068     I have 2 numbers: 53147
2069    
2070     /(.*)\b(\d+)$/
2071     I have 2 numbers: 53147
2072    
2073     /(.*\D)(\d+)$/
2074     I have 2 numbers: 53147
2075    
2076     /^\D*(?!123)/
2077     ABC123
2078    
2079     /^(\D*)(?=\d)(?!123)/
2080     ABC445
2081     *** Failers
2082     ABC123
2083    
2084     /^[W-]46]/
2085     W46]789
2086     -46]789
2087     *** Failers
2088     Wall
2089     Zebra
2090     42
2091     [abcd]
2092     ]abcd[
2093    
2094     /^[W-\]46]/
2095     W46]789
2096     Wall
2097     Zebra
2098     Xylophone
2099     42
2100     [abcd]
2101     ]abcd[
2102     \\backslash
2103     *** Failers
2104     -46]789
2105     well
2106    
2107     /\d\d\/\d\d\/\d\d\d\d/
2108     01/01/2000
2109    
2110     /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2111     word cat dog elephant mussel cow horse canary baboon snake shark otherword
2112     word cat dog elephant mussel cow horse canary baboon snake shark
2113    
2114     /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2115     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
2116    
2117     /^(a){0,0}/
2118 nigel 77 bcd
2119 ph10 836 abc
2120     aab
2121    
2122     /^(a){0,1}/
2123     bcd
2124     abc
2125     aab
2126    
2127     /^(a){0,2}/
2128     bcd
2129     abc
2130     aab
2131    
2132     /^(a){0,3}/
2133     bcd
2134     abc
2135     aab
2136     aaa
2137    
2138     /^(a){0,}/
2139     bcd
2140     abc
2141     aab
2142     aaa
2143     aaaaaaaa
2144    
2145     /^(a){1,1}/
2146     bcd
2147     abc
2148     aab
2149    
2150     /^(a){1,2}/
2151     bcd
2152     abc
2153     aab
2154    
2155     /^(a){1,3}/
2156     bcd
2157     abc
2158     aab
2159     aaa
2160    
2161     /^(a){1,}/
2162     bcd
2163     abc
2164     aab
2165     aaa
2166     aaaaaaaa
2167    
2168     /.*\.gif/
2169     borfle\nbib.gif\nno
2170    
2171     /.{0,}\.gif/
2172     borfle\nbib.gif\nno
2173    
2174     /.*\.gif/m
2175     borfle\nbib.gif\nno
2176    
2177     /.*\.gif/s
2178     borfle\nbib.gif\nno
2179    
2180     /.*\.gif/ms
2181     borfle\nbib.gif\nno
2182 nigel 77
2183 ph10 836 /.*$/
2184     borfle\nbib.gif\nno
2185 nigel 77
2186 ph10 836 /.*$/m
2187     borfle\nbib.gif\nno
2188 nigel 77
2189 ph10 836 /.*$/s
2190     borfle\nbib.gif\nno
2191    
2192     /.*$/ms
2193     borfle\nbib.gif\nno
2194    
2195     /.*$/
2196     borfle\nbib.gif\nno\n
2197    
2198     /.*$/m
2199     borfle\nbib.gif\nno\n
2200    
2201     /.*$/s
2202     borfle\nbib.gif\nno\n
2203    
2204     /.*$/ms
2205     borfle\nbib.gif\nno\n
2206    
2207     /(.*X|^B)/
2208     abcde\n1234Xyz
2209     BarFoo
2210     *** Failers
2211     abcde\nBar
2212    
2213     /(.*X|^B)/m
2214     abcde\n1234Xyz
2215     BarFoo
2216     abcde\nBar
2217    
2218     /(.*X|^B)/s
2219     abcde\n1234Xyz
2220     BarFoo
2221     *** Failers
2222     abcde\nBar
2223    
2224     /(.*X|^B)/ms
2225     abcde\n1234Xyz
2226     BarFoo
2227     abcde\nBar
2228    
2229     /(?s)(.*X|^B)/
2230     abcde\n1234Xyz
2231     BarFoo
2232     *** Failers
2233     abcde\nBar
2234    
2235     /(?s:.*X|^B)/
2236     abcde\n1234Xyz
2237     BarFoo
2238     *** Failers
2239     abcde\nBar
2240    
2241     /^.*B/
2242     **** Failers
2243     abc\nB
2244    
2245     /(?s)^.*B/
2246     abc\nB
2247    
2248     /(?m)^.*B/
2249     abc\nB
2250    
2251     /(?ms)^.*B/
2252     abc\nB
2253    
2254     /(?ms)^B/
2255     abc\nB
2256    
2257     /(?s)B$/
2258     B\n
2259    
2260     /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2261     123456654321
2262    
2263     /^\d\d\d\d\d\d\d\d\d\d\d\d/
2264     123456654321
2265    
2266     /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2267     123456654321
2268    
2269     /^[abc]{12}/
2270     abcabcabcabc
2271    
2272     /^[a-c]{12}/
2273     abcabcabcabc
2274    
2275     /^(a|b|c){12}/
2276     abcabcabcabc
2277    
2278     /^[abcdefghijklmnopqrstuvwxy0123456789]/
2279     n
2280     *** Failers
2281     z
2282    
2283     /abcde{0,0}/
2284 nigel 77 abcd
2285 ph10 836 *** Failers
2286     abce
2287    
2288     /ab[cd]{0,0}e/
2289     abe
2290     *** Failers
2291     abcde
2292    
2293     /ab(c){0,0}d/
2294     abd
2295     *** Failers
2296     abcd
2297    
2298     /a(b*)/
2299     a
2300     ab
2301     abbbb
2302     *** Failers
2303     bbbbb
2304    
2305     /ab\d{0}e/
2306     abe
2307     *** Failers
2308     ab1e
2309    
2310     /"([^\\"]+|\\.)*"/
2311     the \"quick\" brown fox
2312     \"the \\\"quick\\\" brown fox\"
2313    
2314     /.*?/g+
2315     abc
2316    
2317     /\b/g+
2318     abc
2319    
2320     /\b/+g
2321     abc
2322    
2323     //g
2324     abc
2325    
2326     /<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
2327     <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>
2328    
2329     /a[^a]b/
2330     acb
2331     a\nb
2332    
2333     /a.b/
2334     acb
2335     *** Failers
2336     a\nb
2337    
2338     /a[^a]b/s
2339     acb
2340     a\nb
2341    
2342     /a.b/s
2343     acb
2344     a\nb
2345    
2346     /^(b+?|a){1,2}?c/
2347     bac
2348     bbac
2349     bbbac
2350     bbbbac
2351     bbbbbac
2352    
2353     /^(b+|a){1,2}?c/
2354     bac
2355     bbac
2356     bbbac
2357     bbbbac
2358     bbbbbac
2359    
2360     /(?!\A)x/m
2361     x\nb\n
2362     a\bx\n
2363    
2364     /\x0{ab}/
2365     \0{ab}
2366    
2367     /(A|B)*?CD/
2368     CD
2369    
2370     /(A|B)*CD/
2371     CD
2372    
2373     /(?<!bar)foo/
2374     foo
2375     catfood
2376     arfootle
2377     rfoosh
2378     *** Failers
2379     barfoo
2380     towbarfoo
2381    
2382     /\w{3}(?<!bar)foo/
2383     catfood
2384     *** Failers
2385     foo
2386     barfoo
2387     towbarfoo
2388    
2389     /(?<=(foo)a)bar/
2390     fooabar
2391     *** Failers
2392     bar
2393     foobbar
2394    
2395     /\Aabc\z/m
2396     abc
2397     *** Failers
2398     abc\n
2399     qqq\nabc
2400     abc\nzzz
2401     qqq\nabc\nzzz
2402    
2403     "(?>.*/)foo"
2404     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
2405    
2406     "(?>.*/)foo"
2407     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
2408    
2409     /(?>(\.\d\d[1-9]?))\d+/
2410     1.230003938
2411     1.875000282
2412     *** Failers
2413     1.235
2414    
2415     /^((?>\w+)|(?>\s+))*$/
2416     now is the time for all good men to come to the aid of the party
2417     *** Failers
2418     this is not a line with only words and spaces!
2419    
2420     /(\d+)(\w)/
2421     12345a
2422     12345+
2423    
2424     /((?>\d+))(\w)/
2425     12345a
2426     *** Failers
2427     12345+
2428    
2429     /(?>a+)b/
2430     aaab
2431    
2432     /((?>a+)b)/
2433     aaab
2434    
2435     /(?>(a+))b/
2436     aaab
2437    
2438     /(?>b)+/
2439     aaabbbccc
2440    
2441     /(?>a+|b+|c+)*c/
2442     aaabbbbccccd
2443    
2444     /(a+|b+|c+)*c/
2445     aaabbbbccccd
2446    
2447     /((?>[^()]+)|\([^()]*\))+/
2448     ((abc(ade)ufh()()x
2449    
2450     /\(((?>[^()]+)|\([^()]+\))+\)/
2451     (abc)
2452     (abc(def)xyz)
2453     *** Failers
2454     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2455    
2456     /a(?-i)b/i
2457     ab
2458     Ab
2459     *** Failers
2460     aB
2461     AB
2462    
2463     /(a (?x)b c)d e/
2464     a bcd e
2465     *** Failers
2466     a b cd e
2467     abcd e
2468     a bcde
2469 nigel 77
2470 ph10 836 /(a b(?x)c d (?-x)e f)/
2471     a bcde f
2472     *** Failers
2473     abcdef
2474    
2475     /(a(?i)b)c/
2476     abc
2477     aBc
2478     *** Failers
2479     abC
2480     aBC
2481     Abc
2482     ABc
2483     ABC
2484     AbC
2485    
2486     /a(?i:b)c/
2487     abc
2488     aBc
2489     *** Failers
2490     ABC
2491     abC
2492     aBC
2493    
2494     /a(?i:b)*c/
2495     aBc
2496     aBBc
2497     *** Failers
2498     aBC
2499     aBBC
2500    
2501     /a(?=b(?i)c)\w\wd/
2502 nigel 77 abcd
2503 ph10 836 abCd
2504     *** Failers
2505     aBCd
2506     abcD
2507    
2508     /(?s-i:more.*than).*million/i
2509     more than million
2510     more than MILLION
2511     more \n than Million
2512     *** Failers
2513     MORE THAN MILLION
2514     more \n than \n million
2515 nigel 77
2516 ph10 836 /(?:(?s-i)more.*than).*million/i
2517     more than million
2518     more than MILLION
2519     more \n than Million
2520     *** Failers
2521     MORE THAN MILLION
2522     more \n than \n million
2523 nigel 77
2524 ph10 836 /(?>a(?i)b+)+c/
2525     abc
2526     aBbc
2527     aBBc
2528     *** Failers
2529     Abc
2530     abAb
2531     abbC
2532    
2533     /(?=a(?i)b)\w\wc/
2534     abc
2535     aBc
2536     *** Failers
2537     Ab
2538     abC
2539     aBC
2540    
2541     /(?<=a(?i)b)(\w\w)c/
2542     abxxc
2543     aBxxc
2544     *** Failers
2545     Abxxc
2546     ABxxc
2547     abxxC
2548 nigel 77
2549 ph10 836 /^(?(?=abc)\w{3}:|\d\d)$/
2550     abc:
2551     12
2552     *** Failers
2553     123
2554     xyz
2555 nigel 77
2556 ph10 836 /^(?(?!abc)\d\d|\w{3}:)$/
2557     abc:
2558     12
2559     *** Failers
2560     123
2561     xyz
2562    
2563     /(?(?<=foo)bar|cat)/
2564     foobar
2565     cat
2566     fcat
2567     focat
2568     *** Failers
2569     foocat
2570 nigel 77
2571 ph10 836 /(?(?<!foo)cat|bar)/
2572     foobar
2573     cat
2574     fcat
2575     focat
2576     *** Failers
2577     foocat
2578 nigel 77
2579 ph10 836 /(?>a*)*/
2580     a
2581     aa
2582     aaaa
2583    
2584     /(abc|)+/
2585     abc
2586     abcabc
2587     abcabcabc
2588     xyz
2589 nigel 77
2590 ph10 836 /([a]*)*/
2591     a
2592     aaaaa
2593    
2594     /([ab]*)*/
2595     a
2596     b
2597     ababab
2598     aaaabcde
2599     bbbb
2600    
2601     /([^a]*)*/
2602     b
2603     bbbb
2604     aaa
2605    
2606     /([^ab]*)*/
2607     cccc
2608     abab
2609    
2610     /([a]*?)*/
2611     a
2612     aaaa
2613    
2614     /([ab]*?)*/
2615     a
2616     b
2617     abab
2618     baba
2619    
2620     /([^a]*?)*/
2621     b
2622     bbbb
2623     aaa
2624    
2625     /([^ab]*?)*/
2626     c
2627     cccc
2628     baba
2629    
2630     /(?>a*)*/
2631     a
2632     aaabcde
2633    
2634     /((?>a*))*/
2635     aaaaa
2636     aabbaa
2637    
2638     /((?>a*?))*/
2639     aaaaa
2640     aabbaa
2641 nigel 77
2642 ph10 836 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
2643     12-sep-98
2644     12-09-98
2645     *** Failers
2646     sep-12-98
2647    
2648     /(?i:saturday|sunday)/
2649     saturday
2650     sunday
2651     Saturday
2652     Sunday
2653     SATURDAY
2654     SUNDAY
2655     SunDay
2656    
2657     /(a(?i)bc|BB)x/
2658     abcx
2659     aBCx
2660     bbx
2661     BBx
2662     *** Failers
2663     abcX
2664     aBCX
2665     bbX
2666     BBX
2667 nigel 77
2668 ph10 836 /^([ab](?i)[cd]|[ef])/
2669     ac
2670     aC
2671     bD
2672     elephant
2673     Europe
2674     frog
2675     France
2676     *** Failers
2677     Africa
2678 nigel 77
2679 ph10 836 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2680     ab
2681     aBd
2682     xy
2683     xY
2684     zebra
2685     Zambesi
2686     *** Failers
2687     aCD
2688     XY
2689 nigel 77
2690 ph10 836 /(?<=foo\n)^bar/m
2691     foo\nbar
2692     *** Failers
2693     bar
2694     baz\nbar
2695 nigel 77
2696 ph10 836 /(?<=(?<!foo)bar)baz/
2697     barbaz
2698     barbarbaz
2699     koobarbaz
2700     *** Failers
2701     baz
2702     foobarbaz
2703    
2704     /The following tests are taken from the Perl 5.005 test suite; some of them/
2705     /are compatible with 5.004, but I'd rather not have to sort them out./
2706    
2707     /abc/
2708     abc
2709     xabcy
2710     ababc
2711     *** Failers
2712     xbc
2713     axc
2714     abx
2715    
2716     /ab*c/
2717     abc
2718    
2719     /ab*bc/
2720     abc
2721     abbc
2722     abbbbc
2723    
2724     /.{1}/
2725     abbbbc
2726    
2727     /.{3,4}/
2728     abbbbc
2729    
2730     /ab{0,}bc/
2731     abbbbc
2732    
2733     /ab+bc/
2734     abbc
2735     *** Failers
2736     abc
2737     abq
2738    
2739     /ab+bc/
2740     abbbbc
2741    
2742     /ab{1,}bc/
2743     abbbbc
2744    
2745     /ab{1,3}bc/
2746     abbbbc
2747    
2748     /ab{3,4}bc/
2749     abbbbc
2750    
2751     /ab{4,5}bc/
2752     *** Failers
2753     abq
2754     abbbbc
2755    
2756     /ab?bc/
2757     abbc
2758     abc
2759    
2760     /ab{0,1}bc/
2761     abc
2762    
2763     /ab?bc/
2764    
2765     /ab?c/
2766     abc
2767    
2768     /ab{0,1}c/
2769     abc
2770    
2771     /^abc$/
2772     abc
2773     *** Failers
2774     abbbbc
2775     abcc
2776    
2777     /^abc/
2778     abcc
2779    
2780     /^abc$/
2781    
2782     /abc$/
2783     aabc
2784     *** Failers
2785     aabc
2786     aabcd
2787    
2788     /^/
2789     abc
2790    
2791     /$/
2792     abc
2793    
2794     /a.c/
2795     abc
2796     axc
2797    
2798     /a.*c/
2799     axyzc
2800    
2801     /a[bc]d/
2802     abd
2803     *** Failers
2804     axyzd
2805     abc
2806    
2807     /a[b-d]e/
2808     ace
2809    
2810     /a[b-d]/
2811     aac
2812    
2813     /a[-b]/
2814     a-
2815    
2816     /a[b-]/
2817     a-
2818    
2819     /a]/
2820     a]
2821    
2822     /a[]]b/
2823     a]b
2824    
2825     /a[^bc]d/
2826     aed
2827     *** Failers
2828     abd
2829     abd
2830    
2831     /a[^-b]c/
2832     adc
2833    
2834     /a[^]b]c/
2835     adc
2836     *** Failers
2837     a-c
2838     a]c
2839    
2840     /\ba\b/
2841     a-
2842     -a
2843     -a-
2844    
2845     /\by\b/
2846     *** Failers
2847     xy
2848     yz
2849     xyz
2850    
2851     /\Ba\B/
2852     *** Failers
2853     a-
2854     -a
2855     -a-
2856    
2857     /\By\b/
2858     xy
2859    
2860     /\by\B/
2861     yz
2862    
2863     /\By\B/
2864     xyz
2865    
2866     /\w/
2867     a
2868    
2869     /\W/
2870     -
2871     *** Failers
2872     -
2873     a
2874    
2875     /a\sb/
2876     a b
2877    
2878     /a\Sb/
2879     a-b
2880     *** Failers
2881     a-b
2882     a b
2883    
2884     /\d/
2885     1
2886    
2887     /\D/
2888     -
2889     *** Failers
2890     -
2891     1
2892    
2893     /[\w]/
2894     a
2895    
2896     /[\W]/
2897     -
2898     *** Failers
2899     -
2900     a
2901    
2902     /a[\s]b/
2903     a b
2904    
2905     /a[\S]b/
2906     a-b
2907     *** Failers
2908     a-b
2909     a b
2910    
2911     /[\d]/
2912     1
2913    
2914     /[\D]/
2915     -
2916     *** Failers
2917     -
2918     1
2919    
2920     /ab|cd/
2921     abc
2922     abcd
2923    
2924     /()ef/
2925     def
2926    
2927     /$b/
2928    
2929     /a\(b/
2930     a(b
2931    
2932     /a\(*b/
2933     ab
2934     a((b
2935    
2936     /a\\b/
2937     a\b
2938    
2939     /((a))/
2940     abc
2941    
2942     /(a)b(c)/
2943     abc
2944    
2945     /a+b+c/
2946     aabbabc
2947    
2948     /a{1,}b{1,}c/
2949     aabbabc
2950    
2951     /a.+?c/
2952     abcabc
2953    
2954     /(a+|b)*/
2955     ab
2956    
2957     /(a+|b){0,}/
2958     ab
2959    
2960     /(a+|b)+/
2961     ab
2962    
2963     /(a+|b){1,}/
2964     ab
2965    
2966     /(a+|b)?/
2967     ab
2968    
2969     /(a+|b){0,1}/
2970     ab
2971    
2972     /[^ab]*/
2973     cde
2974    
2975     /abc/
2976     *** Failers
2977     b
2978 nigel 77
2979 ph10 836
2980     /a*/
2981 nigel 77
2982 ph10 836
2983     /([abc])*d/
2984     abbbcd
2985    
2986     /([abc])*bcd/
2987     abcd
2988    
2989     /a|b|c|d|e/
2990     e
2991    
2992     /(a|b|c|d|e)f/
2993     ef
2994    
2995     /abcd*efg/
2996     abcdefg
2997    
2998     /ab*/
2999     xabyabbbz
3000     xayabbbz
3001    
3002     /(ab|cd)e/
3003     abcde
3004    
3005     /[abhgefdc]ij/
3006     hij
3007    
3008     /^(ab|cd)e/
3009    
3010     /(abc|)ef/
3011     abcdef
3012    
3013     /(a|b)c*d/
3014     abcd
3015    
3016     /(ab|ab*)bc/
3017     abc
3018    
3019     /a([bc]*)c*/
3020     abc
3021    
3022     /a([bc]*)(c*d)/
3023     abcd
3024    
3025     /a([bc]+)(c*d)/
3026     abcd
3027    
3028     /a([bc]*)(c+d)/
3029     abcd
3030    
3031     /a[bcd]*dcdcde/
3032     adcdcde
3033    
3034     /a[bcd]+dcdcde/
3035 nigel 77 *** Failers
3036 ph10 836 abcde
3037     adcdcde
3038 nigel 77
3039 ph10 836 /(ab|a)b*c/
3040     abc
3041 nigel 77
3042 ph10 836 /((a)(b)c)(d)/
3043     abcd
3044 nigel 77
3045 ph10 836 /[a-zA-Z_][a-zA-Z0-9_]*/
3046     alpha
3047    
3048     /^a(bc+|b[eh])g|.h$/
3049     abh
3050    
3051     /(bc+d$|ef*g.|h?i(j|k))/
3052     effgz
3053     ij
3054     reffgz
3055 nigel 77 *** Failers
3056 ph10 836 effg
3057     bcdd
3058 nigel 77
3059 ph10 836 /((((((((((a))))))))))/
3060     a
3061 nigel 77
3062 ph10 836 /(((((((((a)))))))))/
3063     a
3064 nigel 77
3065 ph10 836 /multiple words of text/
3066 nigel 77 *** Failers
3067 ph10 836 aa
3068     uh-uh
3069 nigel 77
3070 ph10 836 /multiple words/
3071     multiple words, yeah
3072    
3073     /(.*)c(.*)/
3074     abcde
3075    
3076     /\((.*), (.*)\)/
3077     (a, b)
3078    
3079     /[k]/
3080    
3081     /abcd/
3082     abcd
3083    
3084     /a(bc)d/
3085     abcd
3086    
3087     /a[-]?c/
3088     ac
3089    
3090     /abc/i
3091     ABC
3092     XABCY
3093     ABABC
3094 nigel 77 *** Failers
3095 ph10 836 aaxabxbaxbbx
3096     XBC
3097     AXC
3098     ABX
3099 nigel 77
3100 ph10 836 /ab*c/i
3101     ABC
3102    
3103     /ab*bc/i
3104     ABC
3105     ABBC
3106    
3107     /ab*?bc/i
3108     ABBBBC
3109    
3110     /ab{0,}?bc/i
3111     ABBBBC
3112    
3113     /ab+?bc/i
3114     ABBC
3115    
3116     /ab+bc/i
3117 nigel 77 *** Failers
3118 ph10 836 ABC
3119     ABQ
3120 nigel 77
3121 ph10 836 /ab{1,}bc/i
3122    
3123     /ab+bc/i
3124     ABBBBC
3125    
3126     /ab{1,}?bc/i
3127     ABBBBC
3128    
3129     /ab{1,3}?bc/i
3130     ABBBBC
3131    
3132     /ab{3,4}?bc/i
3133     ABBBBC
3134    
3135     /ab{4,5}?bc/i
3136 nigel 77 *** Failers
3137 ph10 836 ABQ
3138     ABBBBC
3139 nigel 77
3140 ph10 836 /ab??bc/i
3141     ABBC
3142     ABC
3143    
3144     /ab{0,1}?bc/i
3145     ABC
3146    
3147     /ab??bc/i
3148    
3149     /ab??c/i
3150     ABC
3151    
3152     /ab{0,1}?c/i
3153     ABC
3154    
3155     /^abc$/i
3156     ABC
3157 nigel 77 *** Failers
3158 ph10 836 ABBBBC
3159     ABCC
3160 nigel 77
3161 ph10 836 /^abc/i
3162     ABCC
3163    
3164     /^abc$/i
3165    
3166     /abc$/i
3167     AABC
3168    
3169     /^/i
3170     ABC
3171    
3172     /$/i
3173     ABC
3174    
3175     /a.c/i
3176     ABC
3177     AXC
3178    
3179     /a.*?c/i
3180     AXYZC
3181    
3182     /a.*c/i
3183 nigel 77 *** Failers
3184 ph10 836 AABC
3185     AXYZD
3186 nigel 77
3187 ph10 836 /a[bc]d/i
3188     ABD
3189    
3190     /a[b-d]e/i
3191     ACE
3192 nigel 77 *** Failers
3193 ph10 836 ABC
3194     ABD
3195 nigel 77
3196 ph10 836 /a[b-d]/i
3197     AAC
3198    
3199     /a[-b]/i
3200     A-
3201    
3202     /a[b-]/i
3203     A-
3204    
3205     /a]/i
3206     A]
3207    
3208     /a[]]b/i
3209     A]B
3210    
3211     /a[^bc]d/i
3212     AED
3213    
3214     /a[^-b]c/i
3215     ADC
3216 nigel 77 *** Failers
3217 ph10 836 ABD
3218     A-C
3219 nigel 77
3220 ph10 836 /a[^]b]c/i
3221     ADC
3222    
3223     /ab|cd/i
3224     ABC
3225     ABCD
3226    
3227     /()ef/i
3228     DEF
3229    
3230     /$b/i
3231 nigel 77 *** Failers
3232 ph10 836 A]C
3233     B
3234 nigel 77
3235 ph10 836 /a\(b/i
3236     A(B
3237    
3238     /a\(*b/i
3239     AB
3240     A((B
3241    
3242     /a\\b/i
3243     A\B
3244    
3245     /((a))/i
3246     ABC
3247    
3248     /(a)b(c)/i
3249     ABC
3250    
3251     /a+b+c/i
3252     AABBABC
3253    
3254     /a{1,}b{1,}c/i
3255     AABBABC
3256    
3257     /a.+?c/i
3258     ABCABC
3259    
3260     /a.*?c/i
3261     ABCABC
3262    
3263     /a.{0,5}?c/i
3264     ABCABC
3265    
3266     /(a+|b)*/i
3267     AB
3268    
3269     /(a+|b){0,}/i
3270     AB
3271    
3272     /(a+|b)+/i
3273     AB
3274    
3275     /(a+|b){1,}/i
3276     AB
3277    
3278     /(a+|b)?/i
3279     AB
3280    
3281     /(a+|b){0,1}/i
3282     AB
3283    
3284     /(a+|b){0,1}?/i
3285     AB
3286    
3287     /[^ab]*/i
3288     CDE
3289    
3290     /abc/i
3291    
3292     /a*/i
3293    
3294    
3295     /([abc])*d/i
3296     ABBBCD
3297    
3298     /([abc])*bcd/i
3299     ABCD
3300    
3301     /a|b|c|d|e/i
3302     E
3303    
3304     /(a|b|c|d|e)f/i
3305     EF
3306    
3307     /abcd*efg/i
3308     ABCDEFG
3309    
3310     /ab*/i
3311     XABYABBBZ
3312     XAYABBBZ
3313    
3314     /(ab|cd)e/i
3315     ABCDE
3316    
3317     /[abhgefdc]ij/i
3318     HIJ
3319    
3320     /^(ab|cd)e/i
3321     ABCDE
3322    
3323     /(abc|)ef/i
3324     ABCDEF
3325    
3326     /(a|b)c*d/i
3327     ABCD
3328    
3329     /(ab|ab*)bc/i
3330     ABC
3331    
3332     /a([bc]*)c*/i
3333     ABC
3334    
3335     /a([bc]*)(c*d)/i
3336     ABCD
3337    
3338     /a([bc]+)(c*d)/i
3339     ABCD
3340    
3341     /a([bc]*)(c+d)/i
3342     ABCD
3343    
3344     /a[bcd]*dcdcde/i
3345     ADCDCDE
3346    
3347     /a[bcd]+dcdcde/i
3348    
3349     /(ab|a)b*c/i
3350     ABC
3351    
3352     /((a)(b)c)(d)/i
3353     ABCD
3354    
3355     /[a-zA-Z_][a-zA-Z0-9_]*/i
3356     ALPHA
3357    
3358     /^a(bc+|b[eh])g|.h$/i
3359     ABH
3360    
3361     /(bc+d$|ef*g.|h?i(j|k))/i
3362     EFFGZ
3363     IJ
3364     REFFGZ
3365 nigel 77 *** Failers
3366 ph10 836 ADCDCDE
3367     EFFG
3368     BCDD
3369 nigel 77
3370 ph10 836 /((((((((((a))))))))))/i
3371     A
3372    
3373     /(((((((((a)))))))))/i
3374     A
3375    
3376     /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3377     A
3378    
3379     /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3380     C
3381    
3382     /multiple words of text/i
3383 nigel 77 *** Failers
3384 ph10 836 AA
3385     UH-UH
3386 nigel 77
3387 ph10 836 /multiple words/i
3388     MULTIPLE WORDS, YEAH
3389    
3390     /(.*)c(.*)/i
3391     ABCDE
3392    
3393     /\((.*), (.*)\)/i
3394     (A, B)
3395    
3396     /[k]/i
3397    
3398     /abcd/i
3399     ABCD
3400    
3401     /a(bc)d/i
3402     ABCD
3403    
3404     /a[-]?c/i
3405     AC
3406    
3407     /a(?!b)./
3408     abad
3409    
3410     /a(?=d)./
3411     abad
3412    
3413     /a(?=c|d)./
3414     abad
3415    
3416     /a(?:b|c|d)(.)/
3417     ace
3418    
3419     /a(?:b|c|d)*(.)/
3420     ace
3421    
3422     /a(?:b|c|d)+?(.)/
3423     ace
3424     acdbcdbe
3425    
3426     /a(?:b|c|d)+(.)/
3427     acdbcdbe
3428    
3429     /a(?:b|c|d){2}(.)/
3430     acdbcdbe
3431    
3432     /a(?:b|c|d){4,5}(.)/
3433     acdbcdbe
3434    
3435     /a(?:b|c|d){4,5}?(.)/
3436     acdbcdbe
3437    
3438     /((foo)|(bar))*/
3439     foobar
3440    
3441     /a(?:b|c|d){6,7}(.)/
3442     acdbcdbe
3443    
3444     /a(?:b|c|d){6,7}?(.)/
3445     acdbcdbe
3446    
3447     /a(?:b|c|d){5,6}(.)/
3448     acdbcdbe
3449    
3450     /a(?:b|c|d){5,6}?(.)/
3451     acdbcdbe
3452    
3453     /a(?:b|c|d){5,7}(.)/
3454     acdbcdbe
3455    
3456     /a(?:b|c|d){5,7}?(.)/
3457     acdbcdbe
3458    
3459     /a(?:b|(c|e){1,2}?|d)+?(.)/
3460     ace
3461    
3462     /^(.+)?B/
3463     AB
3464    
3465     /^([^a-z])|(\^)$/
3466     .
3467    
3468     /^[<>]&/
3469     <&OUT
3470    
3471     /(?:(f)(o)(o)|(b)(a)(r))*/
3472     foobar
3473    
3474     /(?<=a)b/
3475     ab
3476 nigel 77 *** Failers
3477 ph10 836 cb
3478     b
3479 nigel 77
3480 ph10 836 /(?<!c)b/
3481     ab
3482     b
3483     b
3484 nigel 77
3485 ph10 836 /(?:..)*a/
3486     aba
3487 nigel 77
3488 ph10 836 /(?:..)*?a/
3489     aba
3490 nigel 77
3491 ph10 836 /^(){3,5}/
3492     abc
3493 nigel 77
3494 ph10 836 /^(a+)*ax/
3495     aax
3496 nigel 77
3497 ph10 836 /^((a|b)+)*ax/
3498     aax
3499 nigel 77
3500 ph10 836 /^((a|bc)+)*ax/
3501     aax
3502 nigel 77
3503 ph10 836 /(a|x)*ab/
3504     cab
3505 nigel 77
3506 ph10 836 /(a)*ab/
3507     cab
3508 nigel 77
3509 ph10 836 /(?:(?i)a)b/
3510     ab
3511 nigel 77
3512 ph10 836 /((?i)a)b/
3513     ab
3514 nigel 77
3515 ph10 836 /(?:(?i)a)b/
3516     Ab
3517 nigel 77
3518 ph10 836 /((?i)a)b/
3519     Ab
3520    
3521     /(?:(?i)a)b/
3522 nigel 77 *** Failers
3523 ph10 836 cb
3524     aB
3525 nigel 77
3526 ph10 836 /((?i)a)b/
3527    
3528     /(?i:a)b/
3529     ab
3530    
3531     /((?i:a))b/
3532     ab
3533    
3534     /(?i:a)b/
3535     Ab
3536    
3537     /((?i:a))b/
3538     Ab
3539    
3540     /(?i:a)b/
3541 nigel 77 *** Failers
3542 ph10 836 aB
3543     aB
3544 nigel 77
3545 ph10 836 /((?i:a))b/
3546    
3547     /(?:(?-i)a)b/i
3548     ab
3549    
3550     /((?-i)a)b/i
3551     ab
3552    
3553     /(?:(?-i)a)b/i
3554     aB
3555    
3556     /((?-i)a)b/i
3557     aB
3558    
3559     /(?:(?-i)a)b/i
3560 nigel 77 *** Failers
3561 ph10 836 aB
3562     Ab
3563 nigel 77
3564 ph10 836 /((?-i)a)b/i
3565    
3566     /(?:(?-i)a)b/i
3567     aB
3568    
3569     /((?-i)a)b/i
3570     aB
3571    
3572     /(?:(?-i)a)b/i
3573 nigel 77 *** Failers
3574 ph10 836 Ab
3575     AB
3576 nigel 77
3577 ph10 836 /((?-i)a)b/i
3578    
3579     /(?-i:a)b/i
3580     ab
3581    
3582     /((?-i:a))b/i
3583     ab
3584    
3585     /(?-i:a)b/i
3586     aB
3587    
3588     /((?-i:a))b/i
3589     aB
3590    
3591     /(?-i:a)b/i
3592 nigel 77 *** Failers
3593 ph10 836 AB
3594     Ab
3595 nigel 77
3596 ph10 836 /((?-i:a))b/i
3597    
3598     /(?-i:a)b/i
3599     aB
3600    
3601     /((?-i:a))b/i
3602     aB
3603    
3604     /(?-i:a)b/i
3605 nigel 77 *** Failers
3606 ph10 836 Ab
3607     AB
3608 nigel 77
3609 ph10 836 /((?-i:a))b/i
3610    
3611     /((?-i:a.))b/i
3612 nigel 77 *** Failers
3613 ph10 836 AB
3614     a\nB
3615 nigel 77
3616 ph10 836 /((?s-i:a.))b/i
3617     a\nB
3618 nigel 77
3619 ph10 836 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3620     cabbbb
3621 nigel 77
3622 ph10 836 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3623     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3624 nigel 77
3625 ph10 836 /foo\w*\d{4}baz/
3626     foobar1234baz
3627 nigel 77
3628 ph10 836 /x(~~)*(?:(?:F)?)?/
3629     x~~
3630 nigel 77
3631 ph10 836 /^a(?#xxx){3}c/
3632     aaac
3633 nigel 77
3634 ph10 836 /^a (?#xxx) (?#yyy) {3}c/x
3635     aaac
3636 nigel 77
3637 ph10 836 /(?<![cd])b/
3638     *** Failers
3639     B\nB
3640     dbcb
3641    
3642     /(?<![cd])[ab]/
3643     dbaacb
3644    
3645     /(?<!(c|d))b/
3646    
3647     /(?<!(c|d))[ab]/
3648     dbaacb
3649    
3650     /(?<!cd)[ab]/
3651     cdaccb
3652    
3653     /^(?:a?b?)*$/
3654     *** Failers
3655     dbcb
3656     a--
3657    
3658     /((?s)^a(.))((?m)^b$)/
3659     a\nb\nc\n
3660    
3661     /((?m)^b$)/
3662     a\nb\nc\n
3663    
3664     /(?m)^b/
3665     a\nb\n
3666    
3667     /(?m)^(b)/
3668     a\nb\n
3669    
3670     /((?m)^b)/
3671     a\nb\n
3672    
3673     /\n((?m)^b)/
3674     a\nb\n
3675    
3676     /((?s).)c(?!.)/
3677     a\nb\nc\n
3678     a\nb\nc\n
3679    
3680     /((?s)b.)c(?!.)/
3681     a\nb\nc\n
3682     a\nb\nc\n
3683    
3684     /^b/
3685    
3686     /()^b/
3687     *** Failers
3688     a\nb\nc\n
3689     a\nb\nc\n
3690    
3691     /((?m)^b)/
3692     a\nb\nc\n
3693    
3694     /(?(?!a)a|b)/
3695    
3696     /(?(?!a)b|a)/
3697     a
3698    
3699     /(?(?=a)b|a)/
3700     *** Failers
3701     a
3702     a
3703    
3704     /(?(?=a)a|b)/
3705     a
3706    
3707     /(\w+:)+/
3708     one:
3709    
3710     /$(?<=^(a))/
3711     a
3712    
3713     /([\w:]+::)?(\w+)$/
3714     abcd
3715     xy:z:::abcd
3716    
3717     /^[^bcd]*(c+)/
3718     aexycd
3719    
3720     /(a*)b+/
3721     caab
3722    
3723     /([\w:]+::)?(\w+)$/
3724     abcd
3725     xy:z:::abcd
3726     *** Failers
3727     abcd:
3728     abcd:
3729    
3730     /^[^bcd]*(c+)/
3731     aexycd
3732    
3733     /(>a+)ab/
3734    
3735     /(?>a+)b/
3736     aaab
3737    
3738     /([[:]+)/
3739     a:[b]:
3740    
3741     /([[=]+)/
3742     a=[b]=
3743    
3744     /([[.]+)/
3745     a.[b].
3746    
3747     /((?>a+)b)/
3748     aaab
3749    
3750     /(?>(a+))b/
3751     aaab
3752    
3753     /((?>[^()]+)|\([^()]*\))+/
3754     ((abc(ade)ufh()()x
3755    
3756     /a\Z/
3757     *** Failers
3758     aaab
3759     a\nb\n
3760    
3761     /b\Z/
3762     a\nb\n
3763    
3764     /b\z/
3765    
3766     /b\Z/
3767     a\nb
3768    
3769     /b\z/
3770     a\nb
3771     *** Failers
3772    
3773     /(?>.*)(?<=(abcd|wxyz))/
3774     alphabetabcd
3775     endingwxyz
3776     *** Failers
3777     a rather long string that doesn't end with one of them
3778    
3779     /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3780     word cat dog elephant mussel cow horse canary baboon snake shark otherword
3781     word cat dog elephant mussel cow horse canary baboon snake shark
3782 nigel 77
3783 ph10 836 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3784     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
3785 nigel 77
3786 ph10 836 /(?<=\d{3}(?!999))foo/
3787     999foo
3788     123999foo
3789     *** Failers
3790     123abcfoo
3791    
3792     /(?<=(?!...999)\d{3})foo/
3793     999foo
3794     123999foo
3795     *** Failers
3796     123abcfoo
3797 nigel 77
3798 ph10 836 /(?<=\d{3}(?!999)...)foo/
3799     123abcfoo
3800     123456foo
3801     *** Failers
3802     123999foo
3803    
3804     /(?<=\d{3}...)(?<!999)foo/
3805     123abcfoo
3806     123456foo
3807     *** Failers
3808     123999foo
3809 nigel 77
3810 ph10 836 /((Z)+|A)*/
3811     ZABCDEFG
3812 nigel 93
3813 ph10 836 /(Z()|A)*/
3814     ZABCDEFG
3815 nigel 93
3816 ph10 836 /(Z(())|A)*/
3817     ZABCDEFG
3818    
3819     /((?>Z)+|A)*/
3820     ZABCDEFG
3821    
3822     /((?>)+|A)*/
3823     ZABCDEFG
3824    
3825     /a*/g
3826     abbab
3827    
3828     /^[a-\d]/
3829     abcde
3830     -things
3831     0digit
3832     *** Failers
3833     bcdef
3834    
3835     /^[\d-a]/
3836     abcde
3837     -things
3838     0digit
3839     *** Failers
3840     bcdef
3841    
3842     /[[:space:]]+/
3843     > \x09\x0a\x0c\x0d\x0b<
3844    
3845     /[[:blank:]]+/
3846     > \x09\x0a\x0c\x0d\x0b<
3847    
3848     /[\s]+/
3849     > \x09\x0a\x0c\x0d\x0b<
3850    
3851     /\s+/
3852     > \x09\x0a\x0c\x0d\x0b<
3853    
3854     /a b/x
3855     ab
3856    
3857     /(?!\A)x/m
3858     a\nxb\n
3859    
3860     /(?!^)x/m
3861     a\nxb\n
3862    
3863     /abc\Qabc\Eabc/
3864     abcabcabc
3865    
3866     /abc\Q(*+|\Eabc/
3867     abc(*+|abc
3868    
3869     / abc\Q abc\Eabc/x
3870     abc abcabc
3871     *** Failers
3872     abcabcabc
3873    
3874     /abc#comment
3875     \Q#not comment
3876     literal\E/x
3877     abc#not comment\n literal
3878    
3879     /abc#comment
3880     \Q#not comment
3881     literal/x
3882     abc#not comment\n literal
3883    
3884     /abc#comment
3885     \Q#not comment
3886     literal\E #more comment
3887     /x
3888     abc#not comment\n literal
3889    
3890     /abc#comment
3891     \Q#not comment
3892     literal\E #more comment/x
3893     abc#not comment\n literal
3894    
3895     /\Qabc\$xyz\E/
3896     abc\\\$xyz
3897    
3898     /\Qabc\E\$\Qxyz\E/
3899     abc\$xyz
3900    
3901     /\Gabc/
3902     abc
3903     *** Failers
3904     xyzabc
3905    
3906     /\Gabc./g
3907     abc1abc2xyzabc3
3908    
3909     /abc./g
3910     abc1abc2xyzabc3
3911    
3912     /a(?x: b c )d/
3913     XabcdY
3914     *** Failers
3915     Xa b c d Y
3916    
3917     /((?x)x y z | a b c)/
3918     XabcY
3919     AxyzB
3920    
3921     /(?i)AB(?-i)C/
3922     XabCY
3923     *** Failers
3924     XabcY
3925    
3926     /((?i)AB(?-i)C|D)E/
3927     abCE
3928     DE
3929     *** Failers
3930     abcE
3931     abCe
3932     dE
3933     De
3934    
3935     /[z\Qa-d]\E]/
3936     z
3937     a
3938     -
3939     d
3940     ]
3941     *** Failers
3942     b
3943    
3944     /[\z\C]/
3945     z
3946     C
3947    
3948     /\M/
3949     M
3950    
3951     /(a+)*b/
3952     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3953    
3954     /(?i)reg(?:ul(?:[a]|ae)r|ex)/
3955     REGular
3956     regulaer
3957     Regex
3958     regulr
3959    
3960     /[--]+/
3961    
3962    
3963    
3964    
3965    
3966     /(?<=Z)X./
3967     \x84XAZXB
3968    
3969     /^(?(2)a|(1)(2))+$/
3970     123a
3971    
3972     /(?<=a|bbbb)c/
3973     ac
3974     bbbbc
3975    
3976     /abc/SS>testsavedregex
3977     <testsavedregex
3978     abc
3979     *** Failers
3980     bca
3981    
3982     /abc/FSS>testsavedregex
3983     <testsavedregex
3984     abc
3985     *** Failers
3986     bca
3987    
3988     /(a|b)/S>testsavedregex
3989     <testsavedregex
3990     abc
3991     *** Failers
3992     def
3993    
3994     /(a|b)/SF>testsavedregex
3995     <testsavedregex
3996     abc
3997     *** Failers
3998     def
3999    
4000     /line\nbreak/
4001     this is a line\nbreak
4002     line one\nthis is a line\nbreak in the second line
4003    
4004     /line\nbreak/f
4005     this is a line\nbreak
4006     ** Failers
4007     line one\nthis is a line\nbreak in the second line
4008    
4009     /line\nbreak/mf
4010     this is a line\nbreak
4011     ** Failers
4012     line one\nthis is a line\nbreak in the second line
4013    
4014     /1234/
4015     123\P
4016     a4\P\R
4017    
4018     /1234/
4019     123\P
4020     4\P\R
4021    
4022     /^/mg
4023     a\nb\nc\n
4024     \
4025    
4026     /(?<=C\n)^/mg
4027     A\nC\nC\n
4028    
4029     /(?s)A?B/
4030     AB
4031     aB
4032    
4033     /(?s)A*B/
4034     AB
4035     aB
4036    
4037     /(?m)A?B/
4038     AB
4039     aB
4040    
4041     /(?m)A*B/
4042     AB
4043     aB
4044    
4045     /Content-Type\x3A[^\r\n]{6,}/
4046     Content-Type:xxxxxyyy
4047    
4048     /Content-Type\x3A[^\r\n]{6,}z/
4049     Content-Type:xxxxxyyyz
4050    
4051     /Content-Type\x3A[^a]{6,}/
4052     Content-Type:xxxyyy
4053    
4054     /Content-Type\x3A[^a]{6,}z/
4055     Content-Type:xxxyyyz
4056    
4057     /^abc/m
4058     xyz\nabc
4059     xyz\nabc\<lf>
4060     xyz\r\nabc\<lf>
4061     xyz\rabc\<cr>
4062     xyz\r\nabc\<crlf>
4063     ** Failers
4064     xyz\nabc\<cr>
4065     xyz\r\nabc\<cr>
4066     xyz\nabc\<crlf>
4067     xyz\rabc\<crlf>
4068     xyz\rabc\<lf>
4069    
4070     /abc$/m<lf>
4071     xyzabc
4072     xyzabc\n
4073     xyzabc\npqr
4074     xyzabc\r\<cr>
4075     xyzabc\rpqr\<cr>
4076     xyzabc\r\n\<crlf>
4077     xyzabc\r\npqr\<crlf>
4078     ** Failers
4079     xyzabc\r
4080     xyzabc\rpqr
4081     xyzabc\r\n
4082     xyzabc\r\npqr
4083    
4084     /^abc/m<cr>
4085     xyz\rabcdef
4086     xyz\nabcdef\<lf>
4087     ** Failers
4088     xyz\nabcdef
4089    
4090     /^abc/m<lf>
4091     xyz\nabcdef
4092     xyz\rabcdef\<cr>
4093     ** Failers
4094     xyz\rabcdef
4095    
4096     /^abc/m<crlf>
4097     xyz\r\nabcdef
4098     xyz\rabcdef\<cr>
4099     ** Failers
4100     xyz\rabcdef
4101    
4102     /.*/<lf>
4103     abc\ndef
4104     abc\rdef
4105     abc\r\ndef
4106     \<cr>abc\ndef
4107     \<cr>abc\rdef
4108     \<cr>abc\r\ndef
4109     \<crlf>abc\ndef
4110     \<crlf>abc\rdef
4111     \<crlf>abc\r\ndef
4112    
4113     /\w+(.)(.)?def/s
4114     abc\ndef
4115     abc\rdef
4116     abc\r\ndef
4117    
4118     /^\w+=.*(\\\n.*)*/
4119     abc=xyz\\\npqr
4120    
4121     /^(a()*)*/
4122     aaaa
4123    
4124     /^(?:a(?:(?:))*)*/
4125     aaaa
4126    
4127     /^(a()+)+/
4128     aaaa
4129    
4130     /^(?:a(?:(?:))+)+/
4131     aaaa
4132    
4133     /(a|)*\d/
4134     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4135     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4136    
4137     /(?>a|)*\d/
4138     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4139     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4140    
4141     /(?:a|)*\d/
4142     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4143     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4144    
4145     /^a.b/<lf>
4146     a\rb
4147     a\nb\<cr>
4148     ** Failers
4149 nigel 93 a\nb
4150 ph10 836 a\nb\<any>
4151     a\rb\<cr>
4152     a\rb\<any>
4153    
4154     /^abc./mgx<any>
4155     abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
4156    
4157     /abc.$/mgx<any>
4158     abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
4159    
4160     /^a\Rb/<bsr_unicode>
4161     a\nb
4162 nigel 93 a\rb
4163     a\r\nb
4164     a\x0bb
4165     a\x0cb
4166 ph10 836 a\x85b
4167 nigel 93 ** Failers
4168     a\n\rb
4169    
4170 ph10 836 /^a\R*b/<bsr_unicode>
4171 nigel 93 ab
4172     a\nb
4173     a\rb
4174     a\r\nb
4175     a\x0bb
4176 ph10 836 a\x0cb
4177     a\x85b
4178 nigel 93 a\n\rb
4179 ph10 836 a\n\r\x85\x0cb
4180 nigel 93
4181 ph10 836 /^a\R+b/<bsr_unicode>
4182 nigel 93 a\nb
4183     a\rb
4184     a\r\nb
4185     a\x0bb
4186 ph10 836 a\x0cb
4187     a\x85b
4188 nigel 93 a\n\rb
4189 ph10 836 a\n\r\x85\x0cb
4190 nigel 93 ** Failers
4191     ab
4192 ph10 836
4193     /^a\R{1,3}b/<bsr_unicode>
4194 nigel 93 a\nb
4195     a\n\rb
4196 ph10 836 a\n\r\x85b
4197 nigel 93 a\r\n\r\nb
4198     a\r\n\r\n\r\nb
4199     a\n\r\n\rb
4200     a\n\n\r\nb
4201     ** Failers
4202     a\n\n\n\rb
4203     a\r
4204    
4205 ph10 836 /^a[\R]b/<bsr_unicode>
4206     aRb
4207     ** Failers
4208     a\nb
4209 ph10 178
4210 ph10 836 /.+foo/
4211     afoo
4212     ** Failers
4213     \r\nfoo
4214     \nfoo
4215 ph10 178
4216 ph10 836 /.+foo/<crlf>
4217     afoo
4218     \nfoo
4219     ** Failers
4220     \r\nfoo
4221 ph10 178
4222 ph10 836 /.+foo/<any>
4223     afoo
4224     ** Failers
4225     \nfoo
4226     \r\nfoo
4227 ph10 178
4228 ph10 836 /.+foo/s
4229     afoo
4230     \r\nfoo
4231     \nfoo
4232    
4233     /^$/mg<any>
4234     abc\r\rxyz
4235     abc\n\rxyz
4236     ** Failers
4237     abc\r\nxyz
4238    
4239     /^X/m
4240     XABC
4241     ** Failers
4242     XABC\B
4243    
4244     /(?m)^$/<any>g+
4245     abc\r\n\r\n
4246    
4247     /(?m)^$|^\r\n/<any>g+
4248     abc\r\n\r\n
4249    
4250     /(?m)$/<any>g+
4251     abc\r\n\r\n
4252    
4253     /(?|(abc)|(xyz))/
4254     >abc<
4255     >xyz<
4256    
4257     /(x)(?|(abc)|(xyz))(x)/
4258     xabcx
4259     xxyzx
4260    
4261     /(x)(?|(abc)(pqr)|(xyz))(x)/
4262     xabcpqrx
4263     xxyzx
4264    
4265     /(?|(abc)|(xyz))(?1)/
4266     abcabc
4267     xyzabc
4268     ** Failers
4269     xyzxyz
4270    
4271     /\H\h\V\v/
4272 ph10 178 X X\x0a
4273     X\x09X\x0b
4274     ** Failers
4275 ph10 836 \xa0 X\x0a
4276 ph10 178
4277 ph10 836 /\H*\h+\V?\v{3,4}/
4278     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
4279     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
4280     \x09\x20\xa0\x0a\x0b\x0c
4281 ph10 178 ** Failers
4282 ph10 836 \x09\x20\xa0\x0a\x0b
4283 ph10 178
4284 ph10 836 /\H{3,4}/
4285     XY ABCDE
4286     XY PQR ST
4287    
4288     /.\h{3,4}./
4289     XY AB PQRS
4290    
4291     /\h*X\h?\H+Y\H?Z/
4292     >XNNNYZ
4293     > X NYQZ
4294 ph10 178 ** Failers
4295 ph10 836 >XYZ
4296     > X NY Z
4297    
4298     /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
4299     >XY\x0aZ\x0aA\x0bNN\x0c
4300     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
4301    
4302     /.+A/<crlf>
4303     \r\nA
4304 ph10 178
4305 ph10 836 /\nA/<crlf>
4306     \r\nA
4307    
4308     /[\r\n]A/<crlf>
4309     \r\nA
4310    
4311     /(\r|\n)A/<crlf>
4312     \r\nA
4313    
4314     /a\Rb/I<bsr_anycrlf>
4315 ph10 231 a\rb
4316     a\nb
4317     a\r\nb
4318     ** Failers
4319 ph10 836 a\x85b
4320 ph10 231 a\x0bb
4321    
4322 ph10 836 /a\Rb/I<bsr_unicode>
4323 ph10 231 a\rb
4324     a\nb
4325     a\r\nb
4326 ph10 836 a\x85b
4327 ph10 231 a\x0bb
4328     ** Failers
4329 ph10 836 a\x85b\<bsr_anycrlf>
4330 ph10 231 a\x0bb\<bsr_anycrlf>
4331    
4332 ph10 836 /a\R?b/I<bsr_anycrlf>
4333 ph10 231 a\rb
4334     a\nb
4335     a\r\nb
4336     ** Failers
4337 ph10 836 a\x85b
4338 ph10 231 a\x0bb
4339    
4340 ph10 836 /a\R?b/I<bsr_unicode>
4341 ph10 231 a\rb
4342     a\nb
4343     a\r\nb
4344 ph10 836 a\x85b
4345 ph10 231 a\x0bb
4346     ** Failers
4347 ph10 836 a\x85b\<bsr_anycrlf>
4348 ph10 231 a\x0bb\<bsr_anycrlf>
4349 ph10 836
4350     /a\R{2,4}b/I<bsr_anycrlf>
4351     a\r\n\nb
4352     a\n\r\rb
4353     a\r\n\r\n\r\n\r\nb
4354     ** Failers
4355     a\x85\85b
4356     a\x0b\0bb
4357    
4358     /a\R{2,4}b/I<bsr_unicode>
4359     a\r\rb
4360     a\n\n\nb
4361     a\r\n\n\r\rb
4362     a\x85\85b
4363     a\x0b\0bb
4364     ** Failers
4365     a\r\r\r\r\rb
4366     a\x85\85b\<bsr_anycrlf>
4367     a\x0b\0bb\<bsr_anycrlf>
4368    
4369     /a(?!)|\wbc/
4370     abc
4371    
4372     /a[]b/<JS>
4373     ** Failers
4374     ab
4375    
4376     /a[]+b/<JS>
4377     ** Failers
4378     ab
4379    
4380     /a[]*+b/<JS>
4381     ** Failers
4382     ab
4383    
4384     /a[^]b/<JS>
4385     aXb
4386     a\nb
4387     ** Failers
4388     ab
4389    
4390     /a[^]+b/<JS>
4391     aXb
4392     a\nX\nXb
4393     ** Failers
4394     ab
4395    
4396     /X$/E
4397     X
4398     ** Failers
4399     X\n
4400    
4401     /X$/
4402     X
4403     X\n
4404    
4405     /xyz/C
4406     xyz
4407     abcxyz
4408     abcxyz\Y
4409     ** Failers
4410     abc
4411     abc\Y
4412     abcxypqr
4413     abcxypqr\Y
4414    
4415     /(*NO_START_OPT)xyz/C
4416     abcxyz
4417    
4418     /(?C)ab/
4419     ab
4420     \C-ab
4421    
4422     /ab/C
4423     ab
4424     \C-ab
4425    
4426     /^"((?(?=[a])[^"])|b)*"$/C
4427     "ab"
4428     \C-"ab"
4429    
4430     /\d+X|9+Y/
4431     ++++123999\P
4432     ++++123999Y\P
4433    
4434     /Z(*F)/
4435     Z\P
4436     ZA\P
4437    
4438     /Z(?!)/
4439     Z\P
4440     ZA\P
4441    
4442     /dog(sbody)?/
4443     dogs\P
4444     dogs\P\P
4445    
4446     /dog(sbody)??/
4447     dogs\P
4448     dogs\P\P
4449    
4450     /dog|dogsbody/
4451     dogs\P
4452     dogs\P\P
4453 ph10 231
4454 ph10 836 /dogsbody|dog/
4455     dogs\P
4456     dogs\P\P
4457 ph10 365
4458 ph10 836 /Z(*F)Q|ZXY/
4459     Z\P
4460     ZA\P
4461     X\P
4462    
4463     /\bthe cat\b/
4464     the cat\P
4465     the cat\P\P
4466    
4467     /dog(sbody)?/
4468     dogs\D\P
4469     body\D\R
4470    
4471     /dog(sbody)?/
4472     dogs\D\P\P
4473     body\D\R
4474    
4475     /abc/
4476     abc\P