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

Contents of /code/trunk/testdata/testoutput1

Parent Directory Parent Directory | Revision Log Revision Log


Revision 57 - (show annotations) (download)
Sat Feb 24 21:39:50 2007 UTC (7 years, 8 months ago) by nigel
File size: 65784 byte(s)
Load pcre-3.7 into code/trunk.

1 PCRE version 3.7 29-Oct-2001
2
3 /the quick brown fox/
4 the quick brown fox
5 0: the quick brown fox
6 The quick brown FOX
7 No match
8 What do you know about the quick brown fox?
9 0: the quick brown fox
10 What do you know about THE QUICK BROWN FOX?
11 No match
12
13 /The quick brown fox/i
14 the quick brown fox
15 0: the quick brown fox
16 The quick brown FOX
17 0: The quick brown FOX
18 What do you know about the quick brown fox?
19 0: the quick brown fox
20 What do you know about THE QUICK BROWN FOX?
21 0: THE QUICK BROWN FOX
22
23 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
24 abcd\t\n\r\f\a\e9;\$\\?caxyz
25 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
26
27 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
28 abxyzpqrrrabbxyyyypqAzz
29 0: abxyzpqrrrabbxyyyypqAzz
30 abxyzpqrrrabbxyyyypqAzz
31 0: abxyzpqrrrabbxyyyypqAzz
32 aabxyzpqrrrabbxyyyypqAzz
33 0: aabxyzpqrrrabbxyyyypqAzz
34 aaabxyzpqrrrabbxyyyypqAzz
35 0: aaabxyzpqrrrabbxyyyypqAzz
36 aaaabxyzpqrrrabbxyyyypqAzz
37 0: aaaabxyzpqrrrabbxyyyypqAzz
38 abcxyzpqrrrabbxyyyypqAzz
39 0: abcxyzpqrrrabbxyyyypqAzz
40 aabcxyzpqrrrabbxyyyypqAzz
41 0: aabcxyzpqrrrabbxyyyypqAzz
42 aaabcxyzpqrrrabbxyyyypAzz
43 0: aaabcxyzpqrrrabbxyyyypAzz
44 aaabcxyzpqrrrabbxyyyypqAzz
45 0: aaabcxyzpqrrrabbxyyyypqAzz
46 aaabcxyzpqrrrabbxyyyypqqAzz
47 0: aaabcxyzpqrrrabbxyyyypqqAzz
48 aaabcxyzpqrrrabbxyyyypqqqAzz
49 0: aaabcxyzpqrrrabbxyyyypqqqAzz
50 aaabcxyzpqrrrabbxyyyypqqqqAzz
51 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
52 aaabcxyzpqrrrabbxyyyypqqqqqAzz
53 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
54 aaabcxyzpqrrrabbxyyyypqqqqqqAzz
55 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
56 aaaabcxyzpqrrrabbxyyyypqAzz
57 0: aaaabcxyzpqrrrabbxyyyypqAzz
58 abxyzzpqrrrabbxyyyypqAzz
59 0: abxyzzpqrrrabbxyyyypqAzz
60 aabxyzzzpqrrrabbxyyyypqAzz
61 0: aabxyzzzpqrrrabbxyyyypqAzz
62 aaabxyzzzzpqrrrabbxyyyypqAzz
63 0: aaabxyzzzzpqrrrabbxyyyypqAzz
64 aaaabxyzzzzpqrrrabbxyyyypqAzz
65 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
66 abcxyzzpqrrrabbxyyyypqAzz
67 0: abcxyzzpqrrrabbxyyyypqAzz
68 aabcxyzzzpqrrrabbxyyyypqAzz
69 0: aabcxyzzzpqrrrabbxyyyypqAzz
70 aaabcxyzzzzpqrrrabbxyyyypqAzz
71 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
72 aaaabcxyzzzzpqrrrabbxyyyypqAzz
73 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
74 aaaabcxyzzzzpqrrrabbbxyyyypqAzz
75 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
76 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
77 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
78 aaabcxyzpqrrrabbxyyyypABzz
79 0: aaabcxyzpqrrrabbxyyyypABzz
80 aaabcxyzpqrrrabbxyyyypABBzz
81 0: aaabcxyzpqrrrabbxyyyypABBzz
82 >>>aaabxyzpqrrrabbxyyyypqAzz
83 0: aaabxyzpqrrrabbxyyyypqAzz
84 >aaaabxyzpqrrrabbxyyyypqAzz
85 0: aaaabxyzpqrrrabbxyyyypqAzz
86 >>>>abcxyzpqrrrabbxyyyypqAzz
87 0: abcxyzpqrrrabbxyyyypqAzz
88 *** Failers
89 No match
90 abxyzpqrrabbxyyyypqAzz
91 No match
92 abxyzpqrrrrabbxyyyypqAzz
93 No match
94 abxyzpqrrrabxyyyypqAzz
95 No match
96 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
97 No match
98 aaaabcxyzzzzpqrrrabbbxyyypqAzz
99 No match
100 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
101 No match
102
103 /^(abc){1,2}zz/
104 abczz
105 0: abczz
106 1: abc
107 abcabczz
108 0: abcabczz
109 1: abc
110 *** Failers
111 No match
112 zz
113 No match
114 abcabcabczz
115 No match
116 >>abczz
117 No match
118
119 /^(b+?|a){1,2}?c/
120 bc
121 0: bc
122 1: b
123 bbc
124 0: bbc
125 1: b
126 bbbc
127 0: bbbc
128 1: bb
129 bac
130 0: bac
131 1: a
132 bbac
133 0: bbac
134 1: a
135 aac
136 0: aac
137 1: a
138 abbbbbbbbbbbc
139 0: abbbbbbbbbbbc
140 1: bbbbbbbbbbb
141 bbbbbbbbbbbac
142 0: bbbbbbbbbbbac
143 1: a
144 *** Failers
145 No match
146 aaac
147 No match
148 abbbbbbbbbbbac
149 No match
150
151 /^(b+|a){1,2}c/
152 bc
153 0: bc
154 1: b
155 bbc
156 0: bbc
157 1: bb
158 bbbc
159 0: bbbc
160 1: bbb
161 bac
162 0: bac
163 1: a
164 bbac
165 0: bbac
166 1: a
167 aac
168 0: aac
169 1: a
170 abbbbbbbbbbbc
171 0: abbbbbbbbbbbc
172 1: bbbbbbbbbbb
173 bbbbbbbbbbbac
174 0: bbbbbbbbbbbac
175 1: a
176 *** Failers
177 No match
178 aaac
179 No match
180 abbbbbbbbbbbac
181 No match
182
183 /^(b+|a){1,2}?bc/
184 bbc
185 0: bbc
186 1: b
187
188 /^(b*|ba){1,2}?bc/
189 babc
190 0: babc
191 1: ba
192 bbabc
193 0: bbabc
194 1: ba
195 bababc
196 0: bababc
197 1: ba
198 *** Failers
199 No match
200 bababbc
201 No match
202 babababc
203 No match
204
205 /^(ba|b*){1,2}?bc/
206 babc
207 0: babc
208 1: ba
209 bbabc
210 0: bbabc
211 1: ba
212 bababc
213 0: bababc
214 1: ba
215 *** Failers
216 No match
217 bababbc
218 No match
219 babababc
220 No match
221
222 /^\ca\cA\c[\c{\c:/
223 \x01\x01\e;z
224 0: \x01\x01\x1b;z
225
226 /^[ab\]cde]/
227 athing
228 0: a
229 bthing
230 0: b
231 ]thing
232 0: ]
233 cthing
234 0: c
235 dthing
236 0: d
237 ething
238 0: e
239 *** Failers
240 No match
241 fthing
242 No match
243 [thing
244 No match
245 \\thing
246 No match
247
248 /^[]cde]/
249 ]thing
250 0: ]
251 cthing
252 0: c
253 dthing
254 0: d
255 ething
256 0: e
257 *** Failers
258 No match
259 athing
260 No match
261 fthing
262 No match
263
264 /^[^ab\]cde]/
265 fthing
266 0: f
267 [thing
268 0: [
269 \\thing
270 0: \
271 *** Failers
272 0: *
273 athing
274 No match
275 bthing
276 No match
277 ]thing
278 No match
279 cthing
280 No match
281 dthing
282 No match
283 ething
284 No match
285
286 /^[^]cde]/
287 athing
288 0: a
289 fthing
290 0: f
291 *** Failers
292 0: *
293 ]thing
294 No match
295 cthing
296 No match
297 dthing
298 No match
299 ething
300 No match
301
302 /^\/
303
304 0: \x81
305
306 /^/
307
308 0: \xff
309
310 /^[0-9]+$/
311 0
312 0: 0
313 1
314 0: 1
315 2
316 0: 2
317 3
318 0: 3
319 4
320 0: 4
321 5
322 0: 5
323 6
324 0: 6
325 7
326 0: 7
327 8
328 0: 8
329 9
330 0: 9
331 10
332 0: 10
333 100
334 0: 100
335 *** Failers
336 No match
337 abc
338 No match
339
340 /^.*nter/
341 enter
342 0: enter
343 inter
344 0: inter
345 uponter
346 0: uponter
347
348 /^xxx[0-9]+$/
349 xxx0
350 0: xxx0
351 xxx1234
352 0: xxx1234
353 *** Failers
354 No match
355 xxx
356 No match
357
358 /^.+[0-9][0-9][0-9]$/
359 x123
360 0: x123
361 xx123
362 0: xx123
363 123456
364 0: 123456
365 *** Failers
366 No match
367 123
368 No match
369 x1234
370 0: x1234
371
372 /^.+?[0-9][0-9][0-9]$/
373 x123
374 0: x123
375 xx123
376 0: xx123
377 123456
378 0: 123456
379 *** Failers
380 No match
381 123
382 No match
383 x1234
384 0: x1234
385
386 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
387 abc!pqr=apquxz.ixr.zzz.ac.uk
388 0: abc!pqr=apquxz.ixr.zzz.ac.uk
389 1: abc
390 2: pqr
391 *** Failers
392 No match
393 !pqr=apquxz.ixr.zzz.ac.uk
394 No match
395 abc!=apquxz.ixr.zzz.ac.uk
396 No match
397 abc!pqr=apquxz:ixr.zzz.ac.uk
398 No match
399 abc!pqr=apquxz.ixr.zzz.ac.ukk
400 No match
401
402 /:/
403 Well, we need a colon: somewhere
404 0: :
405 *** Fail if we don't
406 No match
407
408 /([\da-f:]+)$/i
409 0abc
410 0: 0abc
411 1: 0abc
412 abc
413 0: abc
414 1: abc
415 fed
416 0: fed
417 1: fed
418 E
419 0: E
420 1: E
421 ::
422 0: ::
423 1: ::
424 5f03:12C0::932e
425 0: 5f03:12C0::932e
426 1: 5f03:12C0::932e
427 fed def
428 0: def
429 1: def
430 Any old stuff
431 0: ff
432 1: ff
433 *** Failers
434 No match
435 0zzz
436 No match
437 gzzz
438 No match
439 fed\x20
440 No match
441 Any old rubbish
442 No match
443
444 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
445 .1.2.3
446 0: .1.2.3
447 1: 1
448 2: 2
449 3: 3
450 A.12.123.0
451 0: A.12.123.0
452 1: 12
453 2: 123
454 3: 0
455 *** Failers
456 No match
457 .1.2.3333
458 No match
459 1.2.3
460 No match
461 1234.2.3
462 No match
463
464 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
465 1 IN SOA non-sp1 non-sp2(
466 0: 1 IN SOA non-sp1 non-sp2(
467 1: 1
468 2: non-sp1
469 3: non-sp2
470 1 IN SOA non-sp1 non-sp2 (
471 0: 1 IN SOA non-sp1 non-sp2 (
472 1: 1
473 2: non-sp1
474 3: non-sp2
475 *** Failers
476 No match
477 1IN SOA non-sp1 non-sp2(
478 No match
479
480 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
481 a.
482 0: a.
483 Z.
484 0: Z.
485 2.
486 0: 2.
487 ab-c.pq-r.
488 0: ab-c.pq-r.
489 1: .pq-r
490 sxk.zzz.ac.uk.
491 0: sxk.zzz.ac.uk.
492 1: .uk
493 x-.y-.
494 0: x-.y-.
495 1: .y-
496 *** Failers
497 No match
498 -abc.peq.
499 No match
500
501 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
502 *.a
503 0: *.a
504 *.b0-a
505 0: *.b0-a
506 1: 0-a
507 *.c3-b.c
508 0: *.c3-b.c
509 1: 3-b
510 2: .c
511 *.c-a.b-c
512 0: *.c-a.b-c
513 1: -a
514 2: .b-c
515 3: -c
516 *** Failers
517 No match
518 *.0
519 No match
520 *.a-
521 No match
522 *.a-b.c-
523 No match
524 *.c-a.0-c
525 No match
526
527 /^(?=ab(de))(abd)(e)/
528 abde
529 0: abde
530 1: de
531 2: abd
532 3: e
533
534 /^(?!(ab)de|x)(abd)(f)/
535 abdf
536 0: abdf
537 1: <unset>
538 2: abd
539 3: f
540
541 /^(?=(ab(cd)))(ab)/
542 abcd
543 0: ab
544 1: abcd
545 2: cd
546 3: ab
547
548 /^[\da-f](\.[\da-f])*$/i
549 a.b.c.d
550 0: a.b.c.d
551 1: .d
552 A.B.C.D
553 0: A.B.C.D
554 1: .D
555 a.b.c.1.2.3.C
556 0: a.b.c.1.2.3.C
557 1: .C
558
559 /^\".*\"\s*(;.*)?$/
560 \"1234\"
561 0: "1234"
562 \"abcd\" ;
563 0: "abcd" ;
564 1: ;
565 \"\" ; rhubarb
566 0: "" ; rhubarb
567 1: ; rhubarb
568 *** Failers
569 No match
570 \"1234\" : things
571 No match
572
573 /^$/
574 \
575 0:
576 *** Failers
577 No match
578
579 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
580 ab c
581 0: ab c
582 *** Failers
583 No match
584 abc
585 No match
586 ab cde
587 No match
588
589 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
590 ab c
591 0: ab c
592 *** Failers
593 No match
594 abc
595 No match
596 ab cde
597 No match
598
599 /^ a\ b[c ]d $/x
600 a bcd
601 0: a bcd
602 a b d
603 0: a b d
604 *** Failers
605 No match
606 abcd
607 No match
608 ab d
609 No match
610
611 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
612 abcdefhijklm
613 0: abcdefhijklm
614 1: abc
615 2: bc
616 3: c
617 4: def
618 5: ef
619 6: f
620 7: hij
621 8: ij
622 9: j
623 10: klm
624 11: lm
625 12: m
626
627 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
628 abcdefhijklm
629 0: abcdefhijklm
630 1: bc
631 2: c
632 3: ef
633 4: f
634 5: ij
635 6: j
636 7: lm
637 8: m
638
639 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
640 a+ Z0+\x08\n\x1d\x12
641 0: a+ Z0+\x08\x0a\x1d\x12
642
643 /^[.^$|()*+?{,}]+/
644 .^\$(*+)|{?,?}
645 0: .^$(*+)|{?,?}
646
647 /^a*\w/
648 z
649 0: z
650 az
651 0: az
652 aaaz
653 0: aaaz
654 a
655 0: a
656 aa
657 0: aa
658 aaaa
659 0: aaaa
660 a+
661 0: a
662 aa+
663 0: aa
664
665 /^a*?\w/
666 z
667 0: z
668 az
669 0: a
670 aaaz
671 0: a
672 a
673 0: a
674 aa
675 0: a
676 aaaa
677 0: a
678 a+
679 0: a
680 aa+
681 0: a
682
683 /^a+\w/
684 az
685 0: az
686 aaaz
687 0: aaaz
688 aa
689 0: aa
690 aaaa
691 0: aaaa
692 aa+
693 0: aa
694
695 /^a+?\w/
696 az
697 0: az
698 aaaz
699 0: aa
700 aa
701 0: aa
702 aaaa
703 0: aa
704 aa+
705 0: aa
706
707 /^\d{8}\w{2,}/
708 1234567890
709 0: 1234567890
710 12345678ab
711 0: 12345678ab
712 12345678__
713 0: 12345678__
714 *** Failers
715 No match
716 1234567
717 No match
718
719 /^[aeiou\d]{4,5}$/
720 uoie
721 0: uoie
722 1234
723 0: 1234
724 12345
725 0: 12345
726 aaaaa
727 0: aaaaa
728 *** Failers
729 No match
730 123456
731 No match
732
733 /^[aeiou\d]{4,5}?/
734 uoie
735 0: uoie
736 1234
737 0: 1234
738 12345
739 0: 1234
740 aaaaa
741 0: aaaa
742 123456
743 0: 1234
744
745 /\A(abc|def)=(\1){2,3}\Z/
746 abc=abcabc
747 0: abc=abcabc
748 1: abc
749 2: abc
750 def=defdefdef
751 0: def=defdefdef
752 1: def
753 2: def
754 *** Failers
755 No match
756 abc=defdef
757 No match
758
759 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
760 abcdefghijkcda2
761 0: abcdefghijkcda2
762 1: a
763 2: b
764 3: c
765 4: d
766 5: e
767 6: f
768 7: g
769 8: h
770 9: i
771 10: j
772 11: k
773 12: cd
774 abcdefghijkkkkcda2
775 0: abcdefghijkkkkcda2
776 1: a
777 2: b
778 3: c
779 4: d
780 5: e
781 6: f
782 7: g
783 8: h
784 9: i
785 10: j
786 11: k
787 12: cd
788
789 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
790 cataract cataract23
791 0: cataract cataract23
792 1: cataract
793 2: aract
794 3: ract
795 4:
796 5: 3
797 catatonic catatonic23
798 0: catatonic catatonic23
799 1: catatonic
800 2: atonic
801 3: tonic
802 4:
803 5: 3
804 caterpillar caterpillar23
805 0: caterpillar caterpillar23
806 1: caterpillar
807 2: erpillar
808 3: <unset>
809 4:
810 5: 3
811
812
813 /^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]/
814 From abcd Mon Sep 01 12:33:02 1997
815 0: From abcd Mon Sep 01 12:33
816 1: abcd
817
818 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
819 From abcd Mon Sep 01 12:33:02 1997
820 0: From abcd Mon Sep 01 12:33
821 1: Sep
822 From abcd Mon Sep 1 12:33:02 1997
823 0: From abcd Mon Sep 1 12:33
824 1: Sep
825 *** Failers
826 No match
827 From abcd Sep 01 12:33:02 1997
828 No match
829
830 /^12.34/s
831 12\n34
832 0: 12\x0a34
833 12\r34
834 0: 12\x0d34
835
836 /\w+(?=\t)/
837 the quick brown\t fox
838 0: brown
839
840 /foo(?!bar)(.*)/
841 foobar is foolish see?
842 0: foolish see?
843 1: lish see?
844
845 /(?:(?!foo)...|^.{0,2})bar(.*)/
846 foobar crowbar etc
847 0: rowbar etc
848 1: etc
849 barrel
850 0: barrel
851 1: rel
852 2barrel
853 0: 2barrel
854 1: rel
855 A barrel
856 0: A barrel
857 1: rel
858
859 /^(\D*)(?=\d)(?!123)/
860 abc456
861 0: abc
862 1: abc
863 *** Failers
864 No match
865 abc123
866 No match
867
868 /^1234(?# test newlines
869 inside)/
870 1234
871 0: 1234
872
873 /^1234 #comment in extended re
874 /x
875 1234
876 0: 1234
877
878 /#rhubarb
879 abcd/x
880 abcd
881 0: abcd
882
883 /^abcd#rhubarb/x
884 abcd
885 0: abcd
886
887 /^(a)\1{2,3}(.)/
888 aaab
889 0: aaab
890 1: a
891 2: b
892 aaaab
893 0: aaaab
894 1: a
895 2: b
896 aaaaab
897 0: aaaaa
898 1: a
899 2: a
900 aaaaaab
901 0: aaaaa
902 1: a
903 2: a
904
905 /(?!^)abc/
906 the abc
907 0: abc
908 *** Failers
909 No match
910 abc
911 No match
912
913 /(?=^)abc/
914 abc
915 0: abc
916 *** Failers
917 No match
918 the abc
919 No match
920
921 /^[ab]{1,3}(ab*|b)/
922 aabbbbb
923 0: aabb
924 1: b
925
926 /^[ab]{1,3}?(ab*|b)/
927 aabbbbb
928 0: aabbbbb
929 1: abbbbb
930
931 /^[ab]{1,3}?(ab*?|b)/
932 aabbbbb
933 0: aa
934 1: a
935
936 /^[ab]{1,3}(ab*?|b)/
937 aabbbbb
938 0: aabb
939 1: b
940
941 / (?: [\040\t] | \(
942 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
943 \) )* # optional leading comment
944 (?: (?:
945 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
946 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
947 |
948 " (?: # opening quote...
949 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
950 | # or
951 \\ [^\x80-\xff] # Escaped something (something != CR)
952 )* " # closing quote
953 ) # initial word
954 (?: (?: [\040\t] | \(
955 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
956 \) )* \. (?: [\040\t] | \(
957 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
958 \) )* (?:
959 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
960 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
961 |
962 " (?: # opening quote...
963 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
964 | # or
965 \\ [^\x80-\xff] # Escaped something (something != CR)
966 )* " # closing quote
967 ) )* # further okay, if led by a period
968 (?: [\040\t] | \(
969 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
970 \) )* @ (?: [\040\t] | \(
971 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
972 \) )* (?:
973 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
974 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
975 | \[ # [
976 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
977 \] # ]
978 ) # initial subdomain
979 (?: #
980 (?: [\040\t] | \(
981 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
982 \) )* \. # if led by a period...
983 (?: [\040\t] | \(
984 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
985 \) )* (?:
986 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
987 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
988 | \[ # [
989 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
990 \] # ]
991 ) # ...further okay
992 )*
993 # address
994 | # or
995 (?:
996 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
997 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
998 |
999 " (?: # opening quote...
1000 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1001 | # or
1002 \\ [^\x80-\xff] # Escaped something (something != CR)
1003 )* " # closing quote
1004 ) # one word, optionally followed by....
1005 (?:
1006 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
1007 \(
1008 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1009 \) | # comments, or...
1010
1011 " (?: # opening quote...
1012 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1013 | # or
1014 \\ [^\x80-\xff] # Escaped something (something != CR)
1015 )* " # closing quote
1016 # quoted strings
1017 )*
1018 < (?: [\040\t] | \(
1019 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1020 \) )* # leading <
1021 (?: @ (?: [\040\t] | \(
1022 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1023 \) )* (?:
1024 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1025 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1026 | \[ # [
1027 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1028 \] # ]
1029 ) # initial subdomain
1030 (?: #
1031 (?: [\040\t] | \(
1032 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1033 \) )* \. # if led by a period...
1034 (?: [\040\t] | \(
1035 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1036 \) )* (?:
1037 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1038 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1039 | \[ # [
1040 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1041 \] # ]
1042 ) # ...further okay
1043 )*
1044
1045 (?: (?: [\040\t] | \(
1046 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1047 \) )* , (?: [\040\t] | \(
1048 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1049 \) )* @ (?: [\040\t] | \(
1050 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1051 \) )* (?:
1052 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1053 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1054 | \[ # [
1055 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1056 \] # ]
1057 ) # initial subdomain
1058 (?: #
1059 (?: [\040\t] | \(
1060 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1061 \) )* \. # if led by a period...
1062 (?: [\040\t] | \(
1063 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1064 \) )* (?:
1065 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1066 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1067 | \[ # [
1068 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1069 \] # ]
1070 ) # ...further okay
1071 )*
1072 )* # further okay, if led by comma
1073 : # closing colon
1074 (?: [\040\t] | \(
1075 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1076 \) )* )? # optional route
1077 (?:
1078 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1079 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1080 |
1081 " (?: # opening quote...
1082 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1083 | # or
1084 \\ [^\x80-\xff] # Escaped something (something != CR)
1085 )* " # closing quote
1086 ) # initial word
1087 (?: (?: [\040\t] | \(
1088 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1089 \) )* \. (?: [\040\t] | \(
1090 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1091 \) )* (?:
1092 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1093 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1094 |
1095 " (?: # opening quote...
1096 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1097 | # or
1098 \\ [^\x80-\xff] # Escaped something (something != CR)
1099 )* " # closing quote
1100 ) )* # further okay, if led by a period
1101 (?: [\040\t] | \(
1102 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1103 \) )* @ (?: [\040\t] | \(
1104 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1105 \) )* (?:
1106 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1107 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1108 | \[ # [
1109 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1110 \] # ]
1111 ) # initial subdomain
1112 (?: #
1113 (?: [\040\t] | \(
1114 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1115 \) )* \. # if led by a period...
1116 (?: [\040\t] | \(
1117 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1118 \) )* (?:
1119 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1120 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1121 | \[ # [
1122 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1123 \] # ]
1124 ) # ...further okay
1125 )*
1126 # address spec
1127 (?: [\040\t] | \(
1128 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1129 \) )* > # trailing >
1130 # name and address
1131 ) (?: [\040\t] | \(
1132 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1133 \) )* # optional trailing comment
1134 /x
1135 Alan Other <user\@dom.ain>
1136 0: Alan Other <user@dom.ain>
1137 <user\@dom.ain>
1138 0: user@dom.ain
1139 user\@dom.ain
1140 0: user@dom.ain
1141 \"A. Other\" <user.1234\@dom.ain> (a comment)
1142 0: "A. Other" <user.1234@dom.ain> (a comment)
1143 A. Other <user.1234\@dom.ain> (a comment)
1144 0: Other <user.1234@dom.ain> (a comment)
1145 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1146 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1147 A missing angle <user\@some.where
1148 0: user@some.where
1149 *** Failers
1150 No match
1151 The quick brown fox
1152 No match
1153
1154 /[\040\t]* # Nab whitespace.
1155 (?:
1156 \( # (
1157 [^\\\x80-\xff\n\015()] * # normal*
1158 (?: # (
1159 (?: \\ [^\x80-\xff] |
1160 \( # (
1161 [^\\\x80-\xff\n\015()] * # normal*
1162 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1163 \) # )
1164 ) # special
1165 [^\\\x80-\xff\n\015()] * # normal*
1166 )* # )*
1167 \) # )
1168 [\040\t]* )* # If comment found, allow more spaces.
1169 # optional leading comment
1170 (?:
1171 (?:
1172 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1173 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1174 # Atom
1175 | # or
1176 " # "
1177 [^\\\x80-\xff\n\015"] * # normal
1178 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1179 " # "
1180 # Quoted string
1181 )
1182 [\040\t]* # Nab whitespace.
1183 (?:
1184 \( # (
1185 [^\\\x80-\xff\n\015()] * # normal*
1186 (?: # (
1187 (?: \\ [^\x80-\xff] |
1188 \( # (
1189 [^\\\x80-\xff\n\015()] * # normal*
1190 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1191 \) # )
1192 ) # special
1193 [^\\\x80-\xff\n\015()] * # normal*
1194 )* # )*
1195 \) # )
1196 [\040\t]* )* # If comment found, allow more spaces.
1197 (?:
1198 \.
1199 [\040\t]* # Nab whitespace.
1200 (?:
1201 \( # (
1202 [^\\\x80-\xff\n\015()] * # normal*
1203 (?: # (
1204 (?: \\ [^\x80-\xff] |
1205 \( # (
1206 [^\\\x80-\xff\n\015()] * # normal*
1207 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1208 \) # )
1209 ) # special
1210 [^\\\x80-\xff\n\015()] * # normal*
1211 )* # )*
1212 \) # )
1213 [\040\t]* )* # If comment found, allow more spaces.
1214 (?:
1215 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1216 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1217 # Atom
1218 | # or
1219 " # "
1220 [^\\\x80-\xff\n\015"] * # normal
1221 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1222 " # "
1223 # Quoted string
1224 )
1225 [\040\t]* # Nab whitespace.
1226 (?:
1227 \( # (
1228 [^\\\x80-\xff\n\015()] * # normal*
1229 (?: # (
1230 (?: \\ [^\x80-\xff] |
1231 \( # (
1232 [^\\\x80-\xff\n\015()] * # normal*
1233 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1234 \) # )
1235 ) # special
1236 [^\\\x80-\xff\n\015()] * # normal*
1237 )* # )*
1238 \) # )
1239 [\040\t]* )* # If comment found, allow more spaces.
1240 # additional words
1241 )*
1242 @
1243 [\040\t]* # Nab whitespace.
1244 (?:
1245 \( # (
1246 [^\\\x80-\xff\n\015()] * # normal*
1247 (?: # (
1248 (?: \\ [^\x80-\xff] |
1249 \( # (
1250 [^\\\x80-\xff\n\015()] * # normal*
1251 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1252 \) # )
1253 ) # special
1254 [^\\\x80-\xff\n\015()] * # normal*
1255 )* # )*
1256 \) # )
1257 [\040\t]* )* # If comment found, allow more spaces.
1258 (?:
1259 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1260 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1261 |
1262 \[ # [
1263 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1264 \] # ]
1265 )
1266 [\040\t]* # Nab whitespace.
1267 (?:
1268 \( # (
1269 [^\\\x80-\xff\n\015()] * # normal*
1270 (?: # (
1271 (?: \\ [^\x80-\xff] |
1272 \( # (
1273 [^\\\x80-\xff\n\015()] * # normal*
1274 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1275 \) # )
1276 ) # special
1277 [^\\\x80-\xff\n\015()] * # normal*
1278 )* # )*
1279 \) # )
1280 [\040\t]* )* # If comment found, allow more spaces.
1281 # optional trailing comments
1282 (?:
1283 \.
1284 [\040\t]* # Nab whitespace.
1285 (?:
1286 \( # (
1287 [^\\\x80-\xff\n\015()] * # normal*
1288 (?: # (
1289 (?: \\ [^\x80-\xff] |
1290 \( # (
1291 [^\\\x80-\xff\n\015()] * # normal*
1292 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1293 \) # )
1294 ) # special
1295 [^\\\x80-\xff\n\015()] * # normal*
1296 )* # )*
1297 \) # )
1298 [\040\t]* )* # If comment found, allow more spaces.
1299 (?:
1300 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1301 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1302 |
1303 \[ # [
1304 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1305 \] # ]
1306 )
1307 [\040\t]* # Nab whitespace.
1308 (?:
1309 \( # (
1310 [^\\\x80-\xff\n\015()] * # normal*
1311 (?: # (
1312 (?: \\ [^\x80-\xff] |
1313 \( # (
1314 [^\\\x80-\xff\n\015()] * # normal*
1315 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1316 \) # )
1317 ) # special
1318 [^\\\x80-\xff\n\015()] * # normal*
1319 )* # )*
1320 \) # )
1321 [\040\t]* )* # If comment found, allow more spaces.
1322 # optional trailing comments
1323 )*
1324 # address
1325 | # or
1326 (?:
1327 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1328 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1329 # Atom
1330 | # or
1331 " # "
1332 [^\\\x80-\xff\n\015"] * # normal
1333 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1334 " # "
1335 # Quoted string
1336 )
1337 # leading word
1338 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
1339 (?:
1340 (?:
1341 \( # (
1342 [^\\\x80-\xff\n\015()] * # normal*
1343 (?: # (
1344 (?: \\ [^\x80-\xff] |
1345 \( # (
1346 [^\\\x80-\xff\n\015()] * # normal*
1347 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1348 \) # )
1349 ) # special
1350 [^\\\x80-\xff\n\015()] * # normal*
1351 )* # )*
1352 \) # )
1353 |
1354 " # "
1355 [^\\\x80-\xff\n\015"] * # normal
1356 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1357 " # "
1358 ) # "special" comment or quoted string
1359 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
1360 )*
1361 <
1362 [\040\t]* # Nab whitespace.
1363 (?:
1364 \( # (
1365 [^\\\x80-\xff\n\015()] * # normal*
1366 (?: # (
1367 (?: \\ [^\x80-\xff] |
1368 \( # (
1369 [^\\\x80-\xff\n\015()] * # normal*
1370 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1371 \) # )
1372 ) # special
1373 [^\\\x80-\xff\n\015()] * # normal*
1374 )* # )*
1375 \) # )
1376 [\040\t]* )* # If comment found, allow more spaces.
1377 # <
1378 (?:
1379 @
1380 [\040\t]* # Nab whitespace.
1381 (?:
1382 \( # (
1383 [^\\\x80-\xff\n\015()] * # normal*
1384 (?: # (
1385 (?: \\ [^\x80-\xff] |
1386 \( # (
1387 [^\\\x80-\xff\n\015()] * # normal*
1388 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1389 \) # )
1390 ) # special
1391 [^\\\x80-\xff\n\015()] * # normal*
1392 )* # )*
1393 \) # )
1394 [\040\t]* )* # If comment found, allow more spaces.
1395 (?:
1396 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1397 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1398 |
1399 \[ # [
1400 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1401 \] # ]
1402 )
1403 [\040\t]* # Nab whitespace.
1404 (?:
1405 \( # (
1406 [^\\\x80-\xff\n\015()] * # normal*
1407 (?: # (
1408 (?: \\ [^\x80-\xff] |
1409 \( # (
1410 [^\\\x80-\xff\n\015()] * # normal*
1411 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1412 \) # )
1413 ) # special
1414 [^\\\x80-\xff\n\015()] * # normal*
1415 )* # )*
1416 \) # )
1417 [\040\t]* )* # If comment found, allow more spaces.
1418 # optional trailing comments
1419 (?:
1420 \.
1421 [\040\t]* # Nab whitespace.
1422 (?:
1423 \( # (
1424 [^\\\x80-\xff\n\015()] * # normal*
1425 (?: # (
1426 (?: \\ [^\x80-\xff] |
1427 \( # (
1428 [^\\\x80-\xff\n\015()] * # normal*
1429 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1430 \) # )
1431 ) # special
1432 [^\\\x80-\xff\n\015()] * # normal*
1433 )* # )*
1434 \) # )
1435 [\040\t]* )* # If comment found, allow more spaces.
1436 (?:
1437 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1438 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1439 |
1440 \[ # [
1441 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1442 \] # ]
1443 )
1444 [\040\t]* # Nab whitespace.
1445 (?:
1446 \( # (
1447 [^\\\x80-\xff\n\015()] * # normal*
1448 (?: # (
1449 (?: \\ [^\x80-\xff] |
1450 \( # (
1451 [^\\\x80-\xff\n\015()] * # normal*
1452 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1453 \) # )
1454 ) # special
1455 [^\\\x80-\xff\n\015()] * # normal*
1456 )* # )*
1457 \) # )
1458 [\040\t]* )* # If comment found, allow more spaces.
1459 # optional trailing comments
1460 )*
1461 (?: ,
1462 [\040\t]* # Nab whitespace.
1463 (?:
1464 \( # (
1465 [^\\\x80-\xff\n\015()] * # normal*
1466 (?: # (
1467 (?: \\ [^\x80-\xff] |
1468 \( # (
1469 [^\\\x80-\xff\n\015()] * # normal*
1470 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1471 \) # )
1472 ) # special
1473 [^\\\x80-\xff\n\015()] * # normal*
1474 )* # )*
1475 \) # )
1476 [\040\t]* )* # If comment found, allow more spaces.
1477 @
1478 [\040\t]* # Nab whitespace.
1479 (?:
1480 \( # (
1481 [^\\\x80-\xff\n\015()] * # normal*
1482 (?: # (
1483 (?: \\ [^\x80-\xff] |
1484 \( # (
1485 [^\\\x80-\xff\n\015()] * # normal*
1486 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1487 \) # )
1488 ) # special
1489 [^\\\x80-\xff\n\015()] * # normal*
1490 )* # )*
1491 \) # )
1492 [\040\t]* )* # If comment found, allow more spaces.
1493 (?:
1494 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1495 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1496 |
1497 \[ # [
1498 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1499 \] # ]
1500 )
1501 [\040\t]* # Nab whitespace.
1502 (?:
1503 \( # (
1504 [^\\\x80-\xff\n\015()] * # normal*
1505 (?: # (
1506 (?: \\ [^\x80-\xff] |
1507 \( # (
1508 [^\\\x80-\xff\n\015()] * # normal*
1509 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1510 \) # )
1511 ) # special
1512 [^\\\x80-\xff\n\015()] * # normal*
1513 )* # )*
1514 \) # )
1515 [\040\t]* )* # If comment found, allow more spaces.
1516 # optional trailing comments
1517 (?:
1518 \.
1519 [\040\t]* # Nab whitespace.
1520 (?:
1521 \( # (
1522 [^\\\x80-\xff\n\015()] * # normal*
1523 (?: # (
1524 (?: \\ [^\x80-\xff] |
1525 \( # (
1526 [^\\\x80-\xff\n\015()] * # normal*
1527 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1528 \) # )
1529 ) # special
1530 [^\\\x80-\xff\n\015()] * # normal*
1531 )* # )*
1532 \) # )
1533 [\040\t]* )* # If comment found, allow more spaces.
1534 (?:
1535 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1536 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1537 |
1538 \[ # [
1539 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1540 \] # ]
1541 )
1542 [\040\t]* # Nab whitespace.
1543 (?:
1544 \( # (
1545 [^\\\x80-\xff\n\015()] * # normal*
1546 (?: # (
1547 (?: \\ [^\x80-\xff] |
1548 \( # (
1549 [^\\\x80-\xff\n\015()] * # normal*
1550 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1551 \) # )
1552 ) # special
1553 [^\\\x80-\xff\n\015()] * # normal*
1554 )* # )*
1555 \) # )
1556 [\040\t]* )* # If comment found, allow more spaces.
1557 # optional trailing comments
1558 )*
1559 )* # additional domains
1560 :
1561 [\040\t]* # Nab whitespace.
1562 (?:
1563 \( # (
1564 [^\\\x80-\xff\n\015()] * # normal*
1565 (?: # (
1566 (?: \\ [^\x80-\xff] |
1567 \( # (
1568 [^\\\x80-\xff\n\015()] * # normal*
1569 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1570 \) # )
1571 ) # special
1572 [^\\\x80-\xff\n\015()] * # normal*
1573 )* # )*
1574 \) # )
1575 [\040\t]* )* # If comment found, allow more spaces.
1576 # optional trailing comments
1577 )? # optional route
1578 (?:
1579 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1580 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1581 # Atom
1582 | # or
1583 " # "
1584 [^\\\x80-\xff\n\015"] * # normal
1585 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1586 " # "
1587 # Quoted string
1588 )
1589 [\040\t]* # Nab whitespace.
1590 (?:
1591 \( # (
1592 [^\\\x80-\xff\n\015()] * # normal*
1593 (?: # (
1594 (?: \\ [^\x80-\xff] |
1595 \( # (
1596 [^\\\x80-\xff\n\015()] * # normal*
1597 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1598 \) # )
1599 ) # special
1600 [^\\\x80-\xff\n\015()] * # normal*
1601 )* # )*
1602 \) # )
1603 [\040\t]* )* # If comment found, allow more spaces.
1604 (?:
1605 \.
1606 [\040\t]* # Nab whitespace.
1607 (?:
1608 \( # (
1609 [^\\\x80-\xff\n\015()] * # normal*
1610 (?: # (
1611 (?: \\ [^\x80-\xff] |
1612 \( # (
1613 [^\\\x80-\xff\n\015()] * # normal*
1614 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1615 \) # )
1616 ) # special
1617 [^\\\x80-\xff\n\015()] * # normal*
1618 )* # )*
1619 \) # )
1620 [\040\t]* )* # If comment found, allow more spaces.
1621 (?:
1622 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1623 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1624 # Atom
1625 | # or
1626 " # "
1627 [^\\\x80-\xff\n\015"] * # normal
1628 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1629 " # "
1630 # Quoted string
1631 )
1632 [\040\t]* # Nab whitespace.
1633 (?:
1634 \( # (
1635 [^\\\x80-\xff\n\015()] * # normal*
1636 (?: # (
1637 (?: \\ [^\x80-\xff] |
1638 \( # (
1639 [^\\\x80-\xff\n\015()] * # normal*
1640 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1641 \) # )
1642 ) # special
1643 [^\\\x80-\xff\n\015()] * # normal*
1644 )* # )*
1645 \) # )
1646 [\040\t]* )* # If comment found, allow more spaces.
1647 # additional words
1648 )*
1649 @
1650 [\040\t]* # Nab whitespace.
1651 (?:
1652 \( # (
1653 [^\\\x80-\xff\n\015()] * # normal*
1654 (?: # (
1655 (?: \\ [^\x80-\xff] |
1656 \( # (
1657 [^\\\x80-\xff\n\015()] * # normal*
1658 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1659 \) # )
1660 ) # special
1661 [^\\\x80-\xff\n\015()] * # normal*
1662 )* # )*
1663 \) # )
1664 [\040\t]* )* # If comment found, allow more spaces.
1665 (?:
1666 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1667 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1668 |
1669 \[ # [
1670 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1671 \] # ]
1672 )
1673 [\040\t]* # Nab whitespace.
1674 (?:
1675 \( # (
1676 [^\\\x80-\xff\n\015()] * # normal*
1677 (?: # (
1678 (?: \\ [^\x80-\xff] |
1679 \( # (
1680 [^\\\x80-\xff\n\015()] * # normal*
1681 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1682 \) # )
1683 ) # special
1684 [^\\\x80-\xff\n\015()] * # normal*
1685 )* # )*
1686 \) # )
1687 [\040\t]* )* # If comment found, allow more spaces.
1688 # optional trailing comments
1689 (?:
1690 \.
1691 [\040\t]* # Nab whitespace.
1692 (?:
1693 \( # (
1694 [^\\\x80-\xff\n\015()] * # normal*
1695 (?: # (
1696 (?: \\ [^\x80-\xff] |
1697 \( # (
1698 [^\\\x80-\xff\n\015()] * # normal*
1699 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1700 \) # )
1701 ) # special
1702 [^\\\x80-\xff\n\015()] * # normal*
1703 )* # )*
1704 \) # )
1705 [\040\t]* )* # If comment found, allow more spaces.
1706 (?:
1707 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1708 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1709 |
1710 \[ # [
1711 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1712 \] # ]
1713 )
1714 [\040\t]* # Nab whitespace.
1715 (?:
1716 \( # (
1717 [^\\\x80-\xff\n\015()] * # normal*
1718 (?: # (
1719 (?: \\ [^\x80-\xff] |
1720 \( # (
1721 [^\\\x80-\xff\n\015()] * # normal*
1722 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1723 \) # )
1724 ) # special
1725 [^\\\x80-\xff\n\015()] * # normal*
1726 )* # )*
1727 \) # )
1728 [\040\t]* )* # If comment found, allow more spaces.
1729 # optional trailing comments
1730 )*
1731 # address spec
1732 > # >
1733 # name and address
1734 )
1735 /x
1736 Alan Other <user\@dom.ain>
1737 0: Alan Other <user@dom.ain>
1738 <user\@dom.ain>
1739 0: user@dom.ain
1740 user\@dom.ain
1741 0: user@dom.ain
1742 \"A. Other\" <user.1234\@dom.ain> (a comment)
1743 0: "A. Other" <user.1234@dom.ain>
1744 A. Other <user.1234\@dom.ain> (a comment)
1745 0: Other <user.1234@dom.ain>
1746 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1747 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1748 A missing angle <user\@some.where
1749 0: user@some.where
1750 *** Failers
1751 No match
1752 The quick brown fox
1753 No match
1754
1755 /abc\0def\00pqr\000xyz\0000AB/
1756 abc\0def\00pqr\000xyz\0000AB
1757 0: abc\x00def\x00pqr\x00xyz\x000AB
1758 abc456 abc\0def\00pqr\000xyz\0000ABCDE
1759 0: abc\x00def\x00pqr\x00xyz\x000AB
1760
1761 /abc\x0def\x00pqr\x000xyz\x0000AB/
1762 abc\x0def\x00pqr\x000xyz\x0000AB
1763 0: abc\x0def\x00pqr\x000xyz\x0000AB
1764 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1765 0: abc\x0def\x00pqr\x000xyz\x0000AB
1766
1767 /^[\000-\037]/
1768 \0A
1769 0: \x00
1770 \01B
1771 0: \x01
1772 \037C
1773 0: \x1f
1774
1775 /\0*/
1776 \0\0\0\0
1777 0: \x00\x00\x00\x00
1778
1779 /A\x0{2,3}Z/
1780 The A\x0\x0Z
1781 0: A\x00\x00Z
1782 An A\0\x0\0Z
1783 0: A\x00\x00\x00Z
1784 *** Failers
1785 No match
1786 A\0Z
1787 No match
1788 A\0\x0\0\x0Z
1789 No match
1790
1791 /^(cow|)\1(bell)/
1792 cowcowbell
1793 0: cowcowbell
1794 1: cow
1795 2: bell
1796 bell
1797 0: bell
1798 1:
1799 2: bell
1800 *** Failers
1801 No match
1802 cowbell
1803 No match
1804
1805 /^\s/
1806 \040abc
1807 0:
1808 \x0cabc
1809 0: \x0c
1810 \nabc
1811 0: \x0a
1812 \rabc
1813 0: \x0d
1814 \tabc
1815 0: \x09
1816 *** Failers
1817 No match
1818 abc
1819 No match
1820
1821 /^a b
1822 c/x
1823 abc
1824 0: abc
1825
1826 /^(a|)\1*b/
1827 ab
1828 0: ab
1829 1: a
1830 aaaab
1831 0: aaaab
1832 1: a
1833 b
1834 0: b
1835 1:
1836 *** Failers
1837 No match
1838 acb
1839 No match
1840
1841 /^(a|)\1+b/
1842 aab
1843 0: aab
1844 1: a
1845 aaaab
1846 0: aaaab
1847 1: a
1848 b
1849 0: b
1850 1:
1851 *** Failers
1852 No match
1853 ab
1854 No match
1855
1856 /^(a|)\1?b/
1857 ab
1858 0: ab
1859 1: a
1860 aab
1861 0: aab
1862 1: a
1863 b
1864 0: b
1865 1:
1866 *** Failers
1867 No match
1868 acb
1869 No match
1870
1871 /^(a|)\1{2}b/
1872 aaab
1873 0: aaab
1874 1: a
1875 b
1876 0: b
1877 1:
1878 *** Failers
1879 No match
1880 ab
1881 No match
1882 aab
1883 No match
1884 aaaab
1885 No match
1886
1887 /^(a|)\1{2,3}b/
1888 aaab
1889 0: aaab
1890 1: a
1891 aaaab
1892 0: aaaab
1893 1: a
1894 b
1895 0: b
1896 1:
1897 *** Failers
1898 No match
1899 ab
1900 No match
1901 aab
1902 No match
1903 aaaaab
1904 No match
1905
1906 /ab{1,3}bc/
1907 abbbbc
1908 0: abbbbc
1909 abbbc
1910 0: abbbc
1911 abbc
1912 0: abbc
1913 *** Failers
1914 No match
1915 abc
1916 No match
1917 abbbbbc
1918 No match
1919
1920 /([^.]*)\.([^:]*):[T ]+(.*)/
1921 track1.title:TBlah blah blah
1922 0: track1.title:TBlah blah blah
1923 1: track1
1924 2: title
1925 3: Blah blah blah
1926
1927 /([^.]*)\.([^:]*):[T ]+(.*)/i
1928 track1.title:TBlah blah blah
1929 0: track1.title:TBlah blah blah
1930 1: track1
1931 2: title
1932 3: Blah blah blah
1933
1934 /([^.]*)\.([^:]*):[t ]+(.*)/i
1935 track1.title:TBlah blah blah
1936 0: track1.title:TBlah blah blah
1937 1: track1
1938 2: title
1939 3: Blah blah blah
1940
1941 /^[W-c]+$/
1942 WXY_^abc
1943 0: WXY_^abc
1944 ***Failers
1945 No match
1946 wxy
1947 No match
1948
1949 /^[W-c]+$/i
1950 WXY_^abc
1951 0: WXY_^abc
1952 wxy_^ABC
1953 0: wxy_^ABC
1954
1955 /^[\x3f-\x5F]+$/i
1956 WXY_^abc
1957 0: WXY_^abc
1958 wxy_^ABC
1959 0: wxy_^ABC
1960
1961 /^abc$/m
1962 abc
1963 0: abc
1964 qqq\nabc
1965 0: abc
1966 abc\nzzz
1967 0: abc
1968 qqq\nabc\nzzz
1969 0: abc
1970
1971 /^abc$/
1972 abc
1973 0: abc
1974 *** Failers
1975 No match
1976 qqq\nabc
1977 No match
1978 abc\nzzz
1979 No match
1980 qqq\nabc\nzzz
1981 No match
1982
1983 /\Aabc\Z/m
1984 abc
1985 0: abc
1986 abc\n
1987 0: abc
1988 *** Failers
1989 No match
1990 qqq\nabc
1991 No match
1992 abc\nzzz
1993 No match
1994 qqq\nabc\nzzz
1995 No match
1996
1997 /\A(.)*\Z/s
1998 abc\ndef
1999 0: abc\x0adef
2000 1: f
2001
2002 /\A(.)*\Z/m
2003 *** Failers
2004 0: *** Failers
2005 1: s
2006 abc\ndef
2007 No match
2008
2009 /(?:b)|(?::+)/
2010 b::c
2011 0: b
2012 c::b
2013 0: ::
2014
2015 /[-az]+/
2016 az-
2017 0: az-
2018 *** Failers
2019 0: a
2020 b
2021 No match
2022
2023 /[az-]+/
2024 za-
2025 0: za-
2026 *** Failers
2027 0: a
2028 b
2029 No match
2030
2031 /[a\-z]+/
2032 a-z
2033 0: a-z
2034 *** Failers
2035 0: a
2036 b
2037 No match
2038
2039 /[a-z]+/
2040 abcdxyz
2041 0: abcdxyz
2042
2043 /[\d-]+/
2044 12-34
2045 0: 12-34
2046 *** Failers
2047 No match
2048 aaa
2049 No match
2050
2051 /[\d-z]+/
2052 12-34z
2053 0: 12-34z
2054 *** Failers
2055 No match
2056 aaa
2057 No match
2058
2059 /\x5c/
2060 \\
2061 0: \
2062
2063 /\x20Z/
2064 the Zoo
2065 0: Z
2066 *** Failers
2067 No match
2068 Zulu
2069 No match
2070
2071 /(abc)\1/i
2072 abcabc
2073 0: abcabc
2074 1: abc
2075 ABCabc
2076 0: ABCabc
2077 1: ABC
2078 abcABC
2079 0: abcABC
2080 1: abc
2081
2082 /ab{3cd/
2083 ab{3cd
2084 0: ab{3cd
2085
2086 /ab{3,cd/
2087 ab{3,cd
2088 0: ab{3,cd
2089
2090 /ab{3,4a}cd/
2091 ab{3,4a}cd
2092 0: ab{3,4a}cd
2093
2094 /{4,5a}bc/
2095 {4,5a}bc
2096 0: {4,5a}bc
2097
2098 /^a.b/
2099 a\rb
2100 0: a\x0db
2101 *** Failers
2102 No match
2103 a\nb
2104 No match
2105
2106 /abc$/
2107 abc
2108 0: abc
2109 abc\n
2110 0: abc
2111 *** Failers
2112 No match
2113 abc\ndef
2114 No match
2115
2116 /(abc)\123/
2117 abc\x53
2118 0: abcS
2119 1: abc
2120
2121 /(abc)\223/
2122 abc\x93
2123 0: abc\x93
2124 1: abc
2125
2126 /(abc)\323/
2127 abc\xd3
2128 0: abc\xd3
2129 1: abc
2130
2131 /(abc)\500/
2132 abc\x40
2133 0: abc@
2134 1: abc
2135 abc\100
2136 0: abc@
2137 1: abc
2138
2139 /(abc)\5000/
2140 abc\x400
2141 0: abc@0
2142 1: abc
2143 abc\x40\x30
2144 0: abc@0
2145 1: abc
2146 abc\1000
2147 0: abc@0
2148 1: abc
2149 abc\100\x30
2150 0: abc@0
2151 1: abc
2152 abc\100\060
2153 0: abc@0
2154 1: abc
2155 abc\100\60
2156 0: abc@0
2157 1: abc
2158
2159 /abc\81/
2160 abc\081
2161 0: abc\x0081
2162 abc\0\x38\x31
2163 0: abc\x0081
2164
2165 /abc\91/
2166 abc\091
2167 0: abc\x0091
2168 abc\0\x39\x31
2169 0: abc\x0091
2170
2171 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2172 abcdefghijkllS
2173 0: abcdefghijkllS
2174 1: a
2175 2: b
2176 3: c
2177 4: d
2178 5: e
2179 6: f
2180 7: g
2181 8: h
2182 9: i
2183 10: j
2184 11: k
2185 12: l
2186
2187 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2188 abcdefghijk\12S
2189 0: abcdefghijk\x0aS
2190 1: a
2191 2: b
2192 3: c
2193 4: d
2194 5: e
2195 6: f
2196 7: g
2197 8: h
2198 9: i
2199 10: j
2200 11: k
2201
2202 /ab\gdef/
2203 abgdef
2204 0: abgdef
2205
2206 /a{0}bc/
2207 bc
2208 0: bc
2209
2210 /(a|(bc)){0,0}?xyz/
2211 xyz
2212 0: xyz
2213
2214 /abc[\10]de/
2215 abc\010de
2216 0: abc\x08de
2217
2218 /abc[\1]de/
2219 abc\1de
2220 0: abc\x01de
2221
2222 /(abc)[\1]de/
2223 abc\1de
2224 0: abc\x01de
2225 1: abc
2226
2227 /a.b(?s)/
2228 a\nb
2229 0: a\x0ab
2230
2231 /^([^a])([^\b])([^c]*)([^d]{3,4})/
2232 baNOTccccd
2233 0: baNOTcccc
2234 1: b
2235 2: a
2236 3: NOT
2237 4: cccc
2238 baNOTcccd
2239 0: baNOTccc
2240 1: b
2241 2: a
2242 3: NOT
2243 4: ccc
2244 baNOTccd
2245 0: baNOTcc
2246 1: b
2247 2: a
2248 3: NO
2249 4: Tcc
2250 bacccd
2251 0: baccc
2252 1: b
2253 2: a
2254 3:
2255 4: ccc
2256 *** Failers
2257 0: *** Failers
2258 1: *
2259 2: *
2260 3: * Fail
2261 4: ers
2262 anything
2263 No match
2264 b\bc
2265 No match
2266 baccd
2267 No match
2268
2269 /[^a]/
2270 Abc
2271 0: A
2272
2273 /[^a]/i
2274 Abc
2275 0: b
2276
2277 /[^a]+/
2278 AAAaAbc
2279 0: AAA
2280
2281 /[^a]+/i
2282 AAAaAbc
2283 0: bc
2284
2285 /[^a]+/
2286 bbb\nccc
2287 0: bbb\x0accc
2288
2289 /[^k]$/
2290 abc
2291 0: c
2292 *** Failers
2293 0: s
2294 abk
2295 No match
2296
2297 /[^k]{2,3}$/
2298 abc
2299 0: abc
2300 kbc
2301 0: bc
2302 kabc
2303 0: abc
2304 *** Failers
2305 0: ers
2306 abk
2307 No match
2308 akb
2309 No match
2310 akk
2311 No match
2312
2313 /^\d{8,}\@.+[^k]$/
2314 12345678\@a.b.c.d
2315 0: 12345678@a.b.c.d
2316 123456789\@x.y.z
2317 0: 123456789@x.y.z
2318 *** Failers
2319 No match
2320 12345678\@x.y.uk
2321 No match
2322 1234567\@a.b.c.d
2323 No match
2324
2325 /(a)\1{8,}/
2326 aaaaaaaaa
2327 0: aaaaaaaaa
2328 1: a
2329 aaaaaaaaaa
2330 0: aaaaaaaaaa
2331 1: a
2332 *** Failers
2333 No match
2334 aaaaaaa
2335 No match
2336
2337 /[^a]/
2338 aaaabcd
2339 0: b
2340 aaAabcd
2341 0: A
2342
2343 /[^a]/i
2344 aaaabcd
2345 0: b
2346 aaAabcd
2347 0: b
2348
2349 /[^az]/
2350 aaaabcd
2351 0: b
2352 aaAabcd
2353 0: A
2354
2355 /[^az]/i
2356 aaaabcd
2357 0: b
2358 aaAabcd
2359 0: b
2360
2361 /\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/
2362 \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
2363 0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
2364
2365 /P[^*]TAIRE[^*]{1,6}?LL/
2366 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2367 0: PSTAIREISLL
2368
2369 /P[^*]TAIRE[^*]{1,}?LL/
2370 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2371 0: PSTAIREISLL
2372
2373 /(\.\d\d[1-9]?)\d+/
2374 1.230003938
2375 0: .230003938
2376 1: .23
2377 1.875000282
2378 0: .875000282
2379 1: .875
2380 1.235
2381 0: .235
2382 1: .23
2383
2384 /(\.\d\d((?=0)|\d(?=\d)))/
2385 1.230003938
2386 0: .23
2387 1: .23
2388 2:
2389 1.875000282
2390 0: .875
2391 1: .875
2392 2: 5
2393 *** Failers
2394 No match
2395 1.235
2396 No match
2397
2398 /a(?)b/
2399 ab
2400 0: ab
2401
2402 /\b(foo)\s+(\w+)/i
2403 Food is on the foo table
2404 0: foo table
2405 1: foo
2406 2: table
2407
2408 /foo(.*)bar/
2409 The food is under the bar in the barn.
2410 0: food is under the bar in the bar
2411 1: d is under the bar in the
2412
2413 /foo(.*?)bar/
2414 The food is under the bar in the barn.
2415 0: food is under the bar
2416 1: d is under the
2417
2418 /(.*)(\d*)/
2419 I have 2 numbers: 53147
2420 0: I have 2 numbers: 53147
2421 1: I have 2 numbers: 53147
2422 2:
2423
2424 /(.*)(\d+)/
2425 I have 2 numbers: 53147
2426 0: I have 2 numbers: 53147
2427 1: I have 2 numbers: 5314
2428 2: 7
2429
2430 /(.*?)(\d*)/
2431 I have 2 numbers: 53147
2432 0:
2433 1:
2434 2:
2435
2436 /(.*?)(\d+)/
2437 I have 2 numbers: 53147
2438 0: I have 2
2439 1: I have
2440 2: 2
2441
2442 /(.*)(\d+)$/
2443 I have 2 numbers: 53147
2444 0: I have 2 numbers: 53147
2445 1: I have 2 numbers: 5314
2446 2: 7
2447
2448 /(.*?)(\d+)$/
2449 I have 2 numbers: 53147
2450 0: I have 2 numbers: 53147
2451 1: I have 2 numbers:
2452 2: 53147
2453
2454 /(.*)\b(\d+)$/
2455 I have 2 numbers: 53147
2456 0: I have 2 numbers: 53147
2457 1: I have 2 numbers:
2458 2: 53147
2459
2460 /(.*\D)(\d+)$/
2461 I have 2 numbers: 53147
2462 0: I have 2 numbers: 53147
2463 1: I have 2 numbers:
2464 2: 53147
2465
2466 /^\D*(?!123)/
2467 ABC123
2468 0: AB
2469
2470 /^(\D*)(?=\d)(?!123)/
2471 ABC445
2472 0: ABC
2473 1: ABC
2474 *** Failers
2475 No match
2476 ABC123
2477 No match
2478
2479 /^[W-]46]/
2480 W46]789
2481 0: W46]
2482 -46]789
2483 0: -46]
2484 *** Failers
2485 No match
2486 Wall
2487 No match
2488 Zebra
2489 No match
2490 42
2491 No match
2492 [abcd]
2493 No match
2494 ]abcd[
2495 No match
2496
2497 /^[W-\]46]/
2498 W46]789
2499 0: W
2500 Wall
2501 0: W
2502 Zebra
2503 0: Z
2504 Xylophone
2505 0: X
2506 42
2507 0: 4
2508 [abcd]
2509 0: [
2510 ]abcd[
2511 0: ]
2512 \\backslash
2513 0: \
2514 *** Failers
2515 No match
2516 -46]789
2517 No match
2518 well
2519 No match
2520
2521 /\d\d\/\d\d\/\d\d\d\d/
2522 01/01/2000
2523 0: 01/01/2000
2524
2525 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2526 word cat dog elephant mussel cow horse canary baboon snake shark otherword
2527 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2528 word cat dog elephant mussel cow horse canary baboon snake shark
2529 No match
2530
2531 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2532 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
2533 No match
2534
2535 /^(a){0,0}/
2536 bcd
2537 0:
2538 abc
2539 0:
2540 aab
2541 0:
2542
2543 /^(a){0,1}/
2544 bcd
2545 0:
2546 abc
2547 0: a
2548 1: a
2549 aab
2550 0: a
2551 1: a
2552
2553 /^(a){0,2}/
2554 bcd
2555 0:
2556 abc
2557 0: a
2558 1: a
2559 aab
2560 0: aa
2561 1: a
2562
2563 /^(a){0,3}/
2564 bcd
2565 0:
2566 abc
2567 0: a
2568 1: a
2569 aab
2570 0: aa
2571 1: a
2572 aaa
2573 0: aaa
2574 1: a
2575
2576 /^(a){0,}/
2577 bcd
2578 0:
2579 abc
2580 0: a
2581 1: a
2582 aab
2583 0: aa
2584 1: a
2585 aaa
2586 0: aaa
2587 1: a
2588 aaaaaaaa
2589 0: aaaaaaaa
2590 1: a
2591
2592 /^(a){1,1}/
2593 bcd
2594 No match
2595 abc
2596 0: a
2597 1: a
2598 aab
2599 0: a
2600 1: a
2601
2602 /^(a){1,2}/
2603 bcd
2604 No match
2605 abc
2606 0: a
2607 1: a
2608 aab
2609 0: aa
2610 1: a
2611
2612 /^(a){1,3}/
2613 bcd
2614 No match
2615 abc
2616 0: a
2617 1: a
2618 aab
2619 0: aa
2620 1: a
2621 aaa
2622 0: aaa
2623 1: a
2624
2625 /^(a){1,}/
2626 bcd
2627 No match
2628 abc
2629 0: a
2630 1: a
2631 aab
2632 0: aa
2633 1: a
2634 aaa
2635 0: aaa
2636 1: a
2637 aaaaaaaa
2638 0: aaaaaaaa
2639 1: a
2640
2641 /.*\.gif/
2642 borfle\nbib.gif\nno
2643 0: bib.gif
2644
2645 /.{0,}\.gif/
2646 borfle\nbib.gif\nno
2647 0: bib.gif
2648
2649 /.*\.gif/m
2650 borfle\nbib.gif\nno
2651 0: bib.gif
2652
2653 /.*\.gif/s
2654 borfle\nbib.gif\nno
2655 0: borfle\x0abib.gif
2656
2657 /.*\.gif/ms
2658 borfle\nbib.gif\nno
2659 0: borfle\x0abib.gif
2660
2661 /.*$/
2662 borfle\nbib.gif\nno
2663 0: no
2664
2665 /.*$/m
2666 borfle\nbib.gif\nno
2667 0: borfle
2668
2669 /.*$/s
2670 borfle\nbib.gif\nno
2671 0: borfle\x0abib.gif\x0ano
2672
2673 /.*$/ms
2674 borfle\nbib.gif\nno
2675 0: borfle\x0abib.gif\x0ano
2676
2677 /.*$/
2678 borfle\nbib.gif\nno\n
2679 0: no
2680
2681 /.*$/m
2682 borfle\nbib.gif\nno\n
2683 0: borfle
2684
2685 /.*$/s
2686 borfle\nbib.gif\nno\n
2687 0: borfle\x0abib.gif\x0ano\x0a
2688
2689 /.*$/ms
2690 borfle\nbib.gif\nno\n
2691 0: borfle\x0abib.gif\x0ano\x0a
2692
2693 /(.*X|^B)/
2694 abcde\n1234Xyz
2695 0: 1234X
2696 1: 1234X
2697 BarFoo
2698 0: B
2699 1: B
2700 *** Failers
2701 No match
2702 abcde\nBar
2703 No match
2704
2705 /(.*X|^B)/m
2706 abcde\n1234Xyz
2707 0: 1234X
2708 1: 1234X
2709 BarFoo
2710 0: B
2711 1: B
2712 abcde\nBar
2713 0: B
2714 1: B
2715
2716 /(.*X|^B)/s
2717 abcde\n1234Xyz
2718 0: abcde\x0a1234X
2719 1: abcde\x0a1234X
2720 BarFoo
2721 0: B
2722 1: B
2723 *** Failers
2724 No match
2725 abcde\nBar
2726 No match
2727
2728 /(.*X|^B)/ms
2729 abcde\n1234Xyz
2730 0: abcde\x0a1234X
2731 1: abcde\x0a1234X
2732 BarFoo
2733 0: B
2734 1: B
2735 abcde\nBar
2736 0: B
2737 1: B
2738
2739 /(?s)(.*X|^B)/
2740 abcde\n1234Xyz
2741 0: abcde\x0a1234X
2742 1: abcde\x0a1234X
2743 BarFoo
2744 0: B
2745 1: B
2746 *** Failers
2747 No match
2748 abcde\nBar
2749 No match
2750
2751 /(?s:.*X|^B)/
2752 abcde\n1234Xyz
2753 0: abcde\x0a1234X
2754 BarFoo
2755 0: B
2756 *** Failers
2757 No match
2758 abcde\nBar
2759 No match
2760
2761 /^.*B/
2762 **** Failers
2763 No match
2764 abc\nB
2765 No match
2766
2767 /(?s)^.*B/
2768 abc\nB
2769 0: abc\x0aB
2770
2771 /(?m)^.*B/
2772 abc\nB
2773 0: B
2774
2775 /(?ms)^.*B/
2776 abc\nB
2777 0: abc\x0aB
2778
2779 /(?ms)^B/
2780 abc\nB
2781 0: B
2782
2783 /(?s)B$/
2784 B\n
2785 0: B
2786
2787 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2788 123456654321
2789 0: 123456654321
2790
2791 /^\d\d\d\d\d\d\d\d\d\d\d\d/
2792 123456654321
2793 0: 123456654321
2794
2795 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2796 123456654321
2797 0: 123456654321
2798
2799 /^[abc]{12}/
2800 abcabcabcabc
2801 0: abcabcabcabc
2802
2803 /^[a-c]{12}/
2804 abcabcabcabc
2805 0: abcabcabcabc
2806
2807 /^(a|b|c){12}/
2808 abcabcabcabc
2809 0: abcabcabcabc
2810 1: c
2811
2812 /^[abcdefghijklmnopqrstuvwxy0123456789]/
2813 n
2814 0: n
2815 *** Failers
2816 No match
2817 z
2818 No match
2819
2820 /abcde{0,0}/
2821 abcd
2822 0: abcd
2823 *** Failers
2824 No match
2825 abce
2826 No match
2827
2828 /ab[cd]{0,0}e/
2829 abe
2830 0: abe
2831 *** Failers
2832 No match
2833 abcde
2834 No match
2835
2836 /ab(c){0,0}d/
2837 abd
2838 0: abd
2839 *** Failers
2840 No match
2841 abcd
2842 No match
2843
2844 /a(b*)/
2845 a
2846 0: a
2847 1:
2848 ab
2849 0: ab
2850 1: b
2851 abbbb
2852 0: abbbb
2853 1: bbbb
2854 *** Failers
2855 0: a
2856 1:
2857 bbbbb
2858 No match
2859
2860 /ab\d{0}e/
2861 abe
2862 0: abe
2863 *** Failers
2864 No match
2865 ab1e
2866 No match
2867
2868 /"([^\\"]+|\\.)*"/
2869 the \"quick\" brown fox
2870 0: "quick"
2871 1: quick
2872 \"the \\\"quick\\\" brown fox\"
2873 0: "the \"quick\" brown fox"
2874 1: brown fox
2875
2876 /.*?/g+
2877 abc
2878 0:
2879 0+ abc
2880 0: a
2881 0+ bc
2882 0:
2883 0+ bc
2884 0: b
2885 0+ c
2886 0:
2887 0+ c
2888 0: c
2889 0+
2890 0:
2891 0+
2892
2893 /\b/g+
2894 abc
2895 0:
2896 0+ abc
2897 0:
2898 0+
2899
2900 /\b/+g
2901 abc
2902 0:
2903 0+ abc
2904 0:
2905 0+
2906
2907 //g
2908 abc
2909 0:
2910 0:
2911 0:
2912 0:
2913
2914 /<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
2915 <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>
2916 0: <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>
2917 1: BGCOLOR='#DBE9E9'
2918 2: align=left valign=top
2919 3: 43.
2920 4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
2921 5:
2922 6:
2923 7: <unset>
2924 8: align=left valign=top
2925 9: Lega lstaff.com
2926 10: align=left valign=top
2927 11: CA - Statewide
2928
2929 /a[^a]b/
2930 acb
2931 0: acb
2932 a\nb
2933 0: a\x0ab
2934
2935 /a.b/
2936 acb
2937 0: acb
2938 *** Failers
2939 No match
2940 a\nb
2941 No match
2942
2943 /a[^a]b/s
2944 acb
2945 0: acb
2946 a\nb
2947 0: a\x0ab
2948
2949 /a.b/s
2950 acb
2951 0: acb
2952 a\nb
2953 0: a\x0ab
2954
2955 /^(b+?|a){1,2}?c/
2956 bac
2957 0: bac
2958 1: a
2959 bbac
2960 0: bbac
2961 1: a
2962 bbbac
2963 0: bbbac
2964 1: a
2965 bbbbac
2966 0: bbbbac
2967 1: a
2968 bbbbbac
2969 0: bbbbbac
2970 1: a
2971
2972 /^(b+|a){1,2}?c/
2973 bac
2974 0: bac
2975 1: a
2976 bbac
2977 0: bbac
2978 1: a
2979 bbbac
2980 0: bbbac
2981 1: a
2982 bbbbac
2983 0: bbbbac
2984 1: a
2985 bbbbbac
2986 0: bbbbbac
2987 1: a
2988
2989 /(?!\A)x/m
2990 x\nb\n
2991 No match
2992 a\bx\n
2993 0: x
2994
2995 /\x0{ab}/
2996 \0{ab}
2997 0: \x00{ab}
2998
2999 /(A|B)*?CD/
3000 CD
3001 0: CD
3002
3003 /(A|B)*CD/
3004 CD
3005 0: CD
3006
3007 /(AB)*?\1/
3008 ABABAB
3009 0: ABAB
3010 1: AB
3011
3012 /(AB)*\1/
3013 ABABAB
3014 0: ABABAB
3015 1: AB
3016
3017 / End of testinput1 /
3018

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12