/[pcre]/code/branches/pcre16/testdata/testinput8
ViewVC logotype

Diff of /code/branches/pcre16/testdata/testinput8

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 755 by ph10, Mon Nov 21 10:41:54 2011 UTC revision 814 by ph10, Wed Dec 21 12:05:24 2011 UTC
# Line 1  Line 1 
1  /-- This set of tests checks UTF-8 support with the DFA matching functionality  /-- This set of tests check the DFA matching functionality of pcre_dfa_exec().
2      of pcre_dfa_exec(). The -dfa flag must be used with pcretest when running      The -dfa flag must be used with pcretest when running it. --/
3      it. --/  
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        ab
18    
19    /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        *** Failers
97        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    
210    /\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        *** Failers
364        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    
440    /xyz$/
441        xyz
442        xyz\n
443        *** Failers
444        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    
456    /\Gabc/
457        abcdef
458        defabcxyz\>3
459        *** Failers
460        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    
510    /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        *** Failers
557        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        abcd
781    
782    /^[\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        *** Failers
792        \"1234\" : things
793    
794    /^$/
795        \
796        *** Failers
797    
798    /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
799        ab c
800        *** Failers
801        abc
802        ab cde
803    
804    /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
805        ab c
806        *** Failers
807        abc
808        ab cde
809    
810    /^   a\ b[c ]d       $/x
811        a bcd
812        a b d
813        *** Failers
814        abcd
815        ab d
816    
817    /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
818        abcdefhijklm
819    
820    /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
821        abcdefhijklm
822    
823    /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
824        a+ Z0+\x08\n\x1d\x12
825    
826    /^[.^$|()*+?{,}]+/
827        .^\$(*+)|{?,?}
828    
829    /^a*\w/
830        z
831        az
832        aaaz
833        a
834        aa
835        aaaa
836        a+
837        aa+
838    
839    /^a*?\w/
840        z
841        az
842        aaaz
843        a
844        aa
845        aaaa
846        a+
847        aa+
848    
849    /^a+\w/
850        az
851        aaaz
852        aa
853        aaaa
854        aa+
855    
856    /^a+?\w/
857        az
858        aaaz
859        aa
860        aaaa
861        aa+
862    
863    /^\d{8}\w{2,}/
864        1234567890
865        12345678ab
866        12345678__
867        *** Failers
868        1234567
869    
870    /^[aeiou\d]{4,5}$/
871        uoie
872        1234
873        12345
874        aaaaa
875        *** Failers
876        123456
877    
878    /^[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        *** Failers
892        From abcd  Sep 01 12:33:02 1997
893    
894    /^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        *** Failers
913        abc123
914    
915    /^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        *** Failers
933        abc
934    
935    /(?=^)abc/
936        abc
937        *** Failers
938        the abc
939    
940    /^[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        *** Failers
1154        The quick brown fox
1155    
1156    /[\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    
1748    /abc\0def\00pqr\000xyz\0000AB/
1749        abc\0def\00pqr\000xyz\0000AB
1750        abc456 abc\0def\00pqr\000xyz\0000ABCDE
1751    
1752    /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    
1835    /\A(.)*\Z/s
1836        abc\ndef
1837    
1838    /\A(.)*\Z/m
1839        *** Failers
1840        abc\ndef
1841    
1842    /(?:b)|(?::+)/
1843        b::c
1844        c::b
1845    
1846    /[-az]+/
1847        az-
1848        *** Failers
1849        b
1850    
1851    /[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    
2040    /a(?)b/
2041        ab
2042    
2043    /\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    
2052    /(.*)(\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    
2061    /(.*?)(\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        bcd
2119        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    
2183    /.*$/
2184        borfle\nbib.gif\nno
2185    
2186    /.*$/m
2187        borfle\nbib.gif\nno
2188    
2189    /.*$/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        abcd
2285        *** 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    
2470    /(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        abcd
2503        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    
2516    /(?:(?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    
2524    /(?>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    
2549    /^(?(?=abc)\w{3}:|\d\d)$/
2550        abc:
2551        12
2552        *** Failers
2553        123
2554        xyz
2555    
2556    /^(?(?!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    
2571    /(?(?<!foo)cat|bar)/
2572        foobar
2573        cat
2574        fcat
2575        focat
2576        *** Failers
2577        foocat
2578    
2579    /(?>a*)*/
2580        a
2581        aa
2582        aaaa
2583    
2584    /(abc|)+/
2585        abc
2586        abcabc
2587        abcabcabc
2588        xyz
2589    
2590    /([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    
2642    /(?(?=[^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    
2668    /^([ab](?i)[cd]|[ef])/
2669        ac
2670        aC
2671        bD
2672        elephant
2673        Europe
2674        frog
2675        France
2676        *** Failers
2677        Africa
2678    
2679    /^(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    
2690    /(?<=foo\n)^bar/m
2691        foo\nbar
2692        *** Failers
2693        bar
2694        baz\nbar
2695    
2696    /(?<=(?<!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    
2979    
2980    /a*/
2981    
2982    
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        *** Failers
3036        abcde
3037        adcdcde
3038    
3039    /(ab|a)b*c/
3040        abc
3041    
3042    /((a)(b)c)(d)/
3043        abcd
3044    
3045    /[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        *** Failers
3056        effg
3057        bcdd
3058    
3059    /((((((((((a))))))))))/
3060        a
3061    
3062    /(((((((((a)))))))))/
3063        a
3064    
3065    /multiple words of text/
3066        *** Failers
3067        aa
3068        uh-uh
3069    
3070    /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        *** Failers
3095        aaxabxbaxbbx
3096        XBC
3097        AXC
3098        ABX
3099    
3100    /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        *** Failers
3118        ABC
3119        ABQ
3120    
3121    /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        *** Failers
3137        ABQ
3138        ABBBBC
3139    
3140    /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        *** Failers
3158        ABBBBC
3159        ABCC
3160    
3161    /^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        *** Failers
3184        AABC
3185        AXYZD
3186    
3187    /a[bc]d/i
3188        ABD
3189    
3190    /a[b-d]e/i
3191        ACE
3192        *** Failers
3193        ABC
3194        ABD
3195    
3196    /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        *** Failers
3217        ABD
3218        A-C
3219    
3220    /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        *** Failers
3232        A]C
3233        B
3234    
3235    /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        *** Failers
3366        ADCDCDE
3367        EFFG
3368        BCDD
3369    
3370    /((((((((((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        *** Failers
3384        AA
3385        UH-UH
3386    
3387    /multiple words/i
3388        MULTIPLE WORDS, YEAH
3389