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