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

Contents of /code/trunk/testdata/testinput1

Parent Directory Parent Directory | Revision Log Revision Log


Revision 55 - (show annotations) (download)
Sat Feb 24 21:39:46 2007 UTC (7 years, 7 months ago) by nigel
File size: 53362 byte(s)
Load pcre-3.6 into code/trunk.

1 /the quick brown fox/
2 the quick brown fox
3 The quick brown FOX
4 What do you know about the quick brown fox?
5 What do you know about THE QUICK BROWN FOX?
6
7 /The quick brown fox/i
8 the quick brown fox
9 The quick brown FOX
10 What do you know about the quick brown fox?
11 What do you know about THE QUICK BROWN FOX?
12
13 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
14 abcd\t\n\r\f\a\e9;\$\\?caxyz
15
16 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
17 abxyzpqrrrabbxyyyypqAzz
18 abxyzpqrrrabbxyyyypqAzz
19 aabxyzpqrrrabbxyyyypqAzz
20 aaabxyzpqrrrabbxyyyypqAzz
21 aaaabxyzpqrrrabbxyyyypqAzz
22 abcxyzpqrrrabbxyyyypqAzz
23 aabcxyzpqrrrabbxyyyypqAzz
24 aaabcxyzpqrrrabbxyyyypAzz
25 aaabcxyzpqrrrabbxyyyypqAzz
26 aaabcxyzpqrrrabbxyyyypqqAzz
27 aaabcxyzpqrrrabbxyyyypqqqAzz
28 aaabcxyzpqrrrabbxyyyypqqqqAzz
29 aaabcxyzpqrrrabbxyyyypqqqqqAzz
30 aaabcxyzpqrrrabbxyyyypqqqqqqAzz
31 aaaabcxyzpqrrrabbxyyyypqAzz
32 abxyzzpqrrrabbxyyyypqAzz
33 aabxyzzzpqrrrabbxyyyypqAzz
34 aaabxyzzzzpqrrrabbxyyyypqAzz
35 aaaabxyzzzzpqrrrabbxyyyypqAzz
36 abcxyzzpqrrrabbxyyyypqAzz
37 aabcxyzzzpqrrrabbxyyyypqAzz
38 aaabcxyzzzzpqrrrabbxyyyypqAzz
39 aaaabcxyzzzzpqrrrabbxyyyypqAzz
40 aaaabcxyzzzzpqrrrabbbxyyyypqAzz
41 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
42 aaabcxyzpqrrrabbxyyyypABzz
43 aaabcxyzpqrrrabbxyyyypABBzz
44 >>>aaabxyzpqrrrabbxyyyypqAzz
45 >aaaabxyzpqrrrabbxyyyypqAzz
46 >>>>abcxyzpqrrrabbxyyyypqAzz
47 *** Failers
48 abxyzpqrrabbxyyyypqAzz
49 abxyzpqrrrrabbxyyyypqAzz
50 abxyzpqrrrabxyyyypqAzz
51 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
52 aaaabcxyzzzzpqrrrabbbxyyypqAzz
53 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
54
55 /^(abc){1,2}zz/
56 abczz
57 abcabczz
58 *** Failers
59 zz
60 abcabcabczz
61 >>abczz
62
63 /^(b+?|a){1,2}?c/
64 bc
65 bbc
66 bbbc
67 bac
68 bbac
69 aac
70 abbbbbbbbbbbc
71 bbbbbbbbbbbac
72 *** Failers
73 aaac
74 abbbbbbbbbbbac
75
76 /^(b+|a){1,2}c/
77 bc
78 bbc
79 bbbc
80 bac
81 bbac
82 aac
83 abbbbbbbbbbbc
84 bbbbbbbbbbbac
85 *** Failers
86 aaac
87 abbbbbbbbbbbac
88
89 /^(b+|a){1,2}?bc/
90 bbc
91
92 /^(b*|ba){1,2}?bc/
93 babc
94 bbabc
95 bababc
96 *** Failers
97 bababbc
98 babababc
99
100 /^(ba|b*){1,2}?bc/
101 babc
102 bbabc
103 bababc
104 *** Failers
105 bababbc
106 babababc
107
108 /^\ca\cA\c[\c{\c:/
109 \x01\x01\e;z
110
111 /^[ab\]cde]/
112 athing
113 bthing
114 ]thing
115 cthing
116 dthing
117 ething
118 *** Failers
119 fthing
120 [thing
121 \\thing
122
123 /^[]cde]/
124 ]thing
125 cthing
126 dthing
127 ething
128 *** Failers
129 athing
130 fthing
131
132 /^[^ab\]cde]/
133 fthing
134 [thing
135 \\thing
136 *** Failers
137 athing
138 bthing
139 ]thing
140 cthing
141 dthing
142 ething
143
144 /^[^]cde]/
145 athing
146 fthing
147 *** Failers
148 ]thing
149 cthing
150 dthing
151 ething
152
153 /^\/
154
155
156 /^/
157
158
159 /^[0-9]+$/
160 0
161 1
162 2
163 3
164 4
165 5
166 6
167 7
168 8
169 9
170 10
171 100
172 *** Failers
173 abc
174
175 /^.*nter/
176 enter
177 inter
178 uponter
179
180 /^xxx[0-9]+$/
181 xxx0
182 xxx1234
183 *** Failers
184 xxx
185
186 /^.+[0-9][0-9][0-9]$/
187 x123
188 xx123
189 123456
190 *** Failers
191 123
192 x1234
193
194 /^.+?[0-9][0-9][0-9]$/
195 x123
196 xx123
197 123456
198 *** Failers
199 123
200 x1234
201
202 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
203 abc!pqr=apquxz.ixr.zzz.ac.uk
204 *** Failers
205 !pqr=apquxz.ixr.zzz.ac.uk
206 abc!=apquxz.ixr.zzz.ac.uk
207 abc!pqr=apquxz:ixr.zzz.ac.uk
208 abc!pqr=apquxz.ixr.zzz.ac.ukk
209
210 /:/
211 Well, we need a colon: somewhere
212 *** Fail if we don't
213
214 /([\da-f:]+)$/i
215 0abc
216 abc
217 fed
218 E
219 ::
220 5f03:12C0::932e
221 fed def
222 Any old stuff
223 *** Failers
224 0zzz
225 gzzz
226 fed\x20
227 Any old rubbish
228
229 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
230 .1.2.3
231 A.12.123.0
232 *** Failers
233 .1.2.3333
234 1.2.3
235 1234.2.3
236
237 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
238 1 IN SOA non-sp1 non-sp2(
239 1 IN SOA non-sp1 non-sp2 (
240 *** Failers
241 1IN SOA non-sp1 non-sp2(
242
243 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
244 a.
245 Z.
246 2.
247 ab-c.pq-r.
248 sxk.zzz.ac.uk.
249 x-.y-.
250 *** Failers
251 -abc.peq.
252
253 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
254 *.a
255 *.b0-a
256 *.c3-b.c
257 *.c-a.b-c
258 *** Failers
259 *.0
260 *.a-
261 *.a-b.c-
262 *.c-a.0-c
263
264 /^(?=ab(de))(abd)(e)/
265 abde
266
267 /^(?!(ab)de|x)(abd)(f)/
268 abdf
269
270 /^(?=(ab(cd)))(ab)/
271 abcd
272
273 /^[\da-f](\.[\da-f])*$/i
274 a.b.c.d
275 A.B.C.D
276 a.b.c.1.2.3.C
277
278 /^\".*\"\s*(;.*)?$/
279 \"1234\"
280 \"abcd\" ;
281 \"\" ; rhubarb
282 *** Failers
283 \"1234\" : things
284
285 /^$/
286 \
287 *** Failers
288
289 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
290 ab c
291 *** Failers
292 abc
293 ab cde
294
295 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
296 ab c
297 *** Failers
298 abc
299 ab cde
300
301 /^ a\ b[c ]d $/x
302 a bcd
303 a b d
304 *** Failers
305 abcd
306 ab d
307
308 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
309 abcdefhijklm
310
311 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
312 abcdefhijklm
313
314 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
315 a+ Z0+\x08\n\x1d\x12
316
317 /^[.^$|()*+?{,}]+/
318 .^\$(*+)|{?,?}
319
320 /^a*\w/
321 z
322 az
323 aaaz
324 a
325 aa
326 aaaa
327 a+
328 aa+
329
330 /^a*?\w/
331 z
332 az
333 aaaz
334 a
335 aa
336 aaaa
337 a+
338 aa+
339
340 /^a+\w/
341 az
342 aaaz
343 aa
344 aaaa
345 aa+
346
347 /^a+?\w/
348 az
349 aaaz
350 aa
351 aaaa
352 aa+
353
354 /^\d{8}\w{2,}/
355 1234567890
356 12345678ab
357 12345678__
358 *** Failers
359 1234567
360
361 /^[aeiou\d]{4,5}$/
362 uoie
363 1234
364 12345
365 aaaaa
366 *** Failers
367 123456
368
369 /^[aeiou\d]{4,5}?/
370 uoie
371 1234
372 12345
373 aaaaa
374 123456
375
376 /\A(abc|def)=(\1){2,3}\Z/
377 abc=abcabc
378 def=defdefdef
379 *** Failers
380 abc=defdef
381
382 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
383 abcdefghijkcda2
384 abcdefghijkkkkcda2
385
386 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
387 cataract cataract23
388 catatonic catatonic23
389 caterpillar caterpillar23
390
391
392 /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
393 From abcd Mon Sep 01 12:33:02 1997
394
395 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
396 From abcd Mon Sep 01 12:33:02 1997
397 From abcd Mon Sep 1 12:33:02 1997
398 *** Failers
399 From abcd Sep 01 12:33:02 1997
400
401 /^12.34/s
402 12\n34
403 12\r34
404
405 /\w+(?=\t)/
406 the quick brown\t fox
407
408 /foo(?!bar)(.*)/
409 foobar is foolish see?
410
411 /(?:(?!foo)...|^.{0,2})bar(.*)/
412 foobar crowbar etc
413 barrel
414 2barrel
415 A barrel
416
417 /^(\D*)(?=\d)(?!123)/
418 abc456
419 *** Failers
420 abc123
421
422 /^1234(?# test newlines
423 inside)/
424 1234
425
426 /^1234 #comment in extended re
427 /x
428 1234
429
430 /#rhubarb
431 abcd/x
432 abcd
433
434 /^abcd#rhubarb/x
435 abcd
436
437 /^(a)\1{2,3}(.)/
438 aaab
439 aaaab
440 aaaaab
441 aaaaaab
442
443 /(?!^)abc/
444 the abc
445 *** Failers
446 abc
447
448 /(?=^)abc/
449 abc
450 *** Failers
451 the abc
452
453 /^[ab]{1,3}(ab*|b)/
454 aabbbbb
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 / (?: [\040\t] | \(
466 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
467 \) )* # optional leading comment
468 (?: (?:
469 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
470 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
471 |
472 " (?: # opening quote...
473 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
474 | # or
475 \\ [^\x80-\xff] # Escaped something (something != CR)
476 )* " # closing quote
477 ) # initial word
478 (?: (?: [\040\t] | \(
479 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
480 \) )* \. (?: [\040\t] | \(
481 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
482 \) )* (?:
483 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
484 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
485 |
486 " (?: # opening quote...
487 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
488 | # or
489 \\ [^\x80-\xff] # Escaped something (something != CR)
490 )* " # closing quote
491 ) )* # further okay, if led by a period
492 (?: [\040\t] | \(
493 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
494 \) )* @ (?: [\040\t] | \(
495 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
496 \) )* (?:
497 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
498 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
499 | \[ # [
500 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
501 \] # ]
502 ) # initial subdomain
503 (?: #
504 (?: [\040\t] | \(
505 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
506 \) )* \. # if led by a period...
507 (?: [\040\t] | \(
508 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
509 \) )* (?:
510 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
511 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
512 | \[ # [
513 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
514 \] # ]
515 ) # ...further okay
516 )*
517 # address
518 | # or
519 (?:
520 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
521 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
522 |
523 " (?: # opening quote...
524 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
525 | # or
526 \\ [^\x80-\xff] # Escaped something (something != CR)
527 )* " # closing quote
528 ) # one word, optionally followed by....
529 (?:
530 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
531 \(
532 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
533 \) | # comments, or...
534
535 " (?: # opening quote...
536 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
537 | # or
538 \\ [^\x80-\xff] # Escaped something (something != CR)
539 )* " # closing quote
540 # quoted strings
541 )*
542 < (?: [\040\t] | \(
543 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
544 \) )* # leading <
545 (?: @ (?: [\040\t] | \(
546 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
547 \) )* (?:
548 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
549 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
550 | \[ # [
551 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
552 \] # ]
553 ) # initial subdomain
554 (?: #
555 (?: [\040\t] | \(
556 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
557 \) )* \. # if led by a period...
558 (?: [\040\t] | \(
559 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
560 \) )* (?:
561 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
562 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
563 | \[ # [
564 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
565 \] # ]
566 ) # ...further okay
567 )*
568
569 (?: (?: [\040\t] | \(
570 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
571 \) )* , (?: [\040\t] | \(
572 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
573 \) )* @ (?: [\040\t] | \(
574 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
575 \) )* (?:
576 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
577 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
578 | \[ # [
579 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
580 \] # ]
581 ) # initial subdomain
582 (?: #
583 (?: [\040\t] | \(
584 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
585 \) )* \. # if led by a period...
586 (?: [\040\t] | \(
587 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
588 \) )* (?:
589 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
590 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
591 | \[ # [
592 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
593 \] # ]
594 ) # ...further okay
595 )*
596 )* # further okay, if led by comma
597 : # closing colon
598 (?: [\040\t] | \(
599 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
600 \) )* )? # optional route
601 (?:
602 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
603 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
604 |
605 " (?: # opening quote...
606 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
607 | # or
608 \\ [^\x80-\xff] # Escaped something (something != CR)
609 )* " # closing quote
610 ) # initial word
611 (?: (?: [\040\t] | \(
612 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
613 \) )* \. (?: [\040\t] | \(
614 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
615 \) )* (?:
616 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
617 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
618 |
619 " (?: # opening quote...
620 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
621 | # or
622 \\ [^\x80-\xff] # Escaped something (something != CR)
623 )* " # closing quote
624 ) )* # further okay, if led by a period
625 (?: [\040\t] | \(
626 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
627 \) )* @ (?: [\040\t] | \(
628 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
629 \) )* (?:
630 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
631 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
632 | \[ # [
633 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
634 \] # ]
635 ) # initial subdomain
636 (?: #
637 (?: [\040\t] | \(
638 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
639 \) )* \. # if led by a period...
640 (?: [\040\t] | \(
641 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
642 \) )* (?:
643 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
644 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
645 | \[ # [
646 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
647 \] # ]
648 ) # ...further okay
649 )*
650 # address spec
651 (?: [\040\t] | \(
652 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
653 \) )* > # trailing >
654 # name and address
655 ) (?: [\040\t] | \(
656 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
657 \) )* # optional trailing comment
658 /x
659 Alan Other <user\@dom.ain>
660 <user\@dom.ain>
661 user\@dom.ain
662 \"A. Other\" <user.1234\@dom.ain> (a comment)
663 A. Other <user.1234\@dom.ain> (a comment)
664 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
665 A missing angle <user\@some.where
666 *** Failers
667 The quick brown fox
668
669 /[\040\t]* # Nab whitespace.
670 (?:
671 \( # (
672 [^\\\x80-\xff\n\015()] * # normal*
673 (?: # (
674 (?: \\ [^\x80-\xff] |
675 \( # (
676 [^\\\x80-\xff\n\015()] * # normal*
677 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
678 \) # )
679 ) # special
680 [^\\\x80-\xff\n\015()] * # normal*
681 )* # )*
682 \) # )
683 [\040\t]* )* # If comment found, allow more spaces.
684 # optional leading comment
685 (?:
686 (?:
687 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
688 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
689 # Atom
690 | # or
691 " # "
692 [^\\\x80-\xff\n\015"] * # normal
693 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
694 " # "
695 # Quoted string
696 )
697 [\040\t]* # Nab whitespace.
698 (?:
699 \( # (
700 [^\\\x80-\xff\n\015()] * # normal*
701 (?: # (
702 (?: \\ [^\x80-\xff] |
703 \( # (
704 [^\\\x80-\xff\n\015()] * # normal*
705 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
706 \) # )
707 ) # special
708 [^\\\x80-\xff\n\015()] * # normal*
709 )* # )*
710 \) # )
711 [\040\t]* )* # If comment found, allow more spaces.
712 (?:
713 \.
714 [\040\t]* # Nab whitespace.
715 (?:
716 \( # (
717 [^\\\x80-\xff\n\015()] * # normal*
718 (?: # (
719 (?: \\ [^\x80-\xff] |
720 \( # (
721 [^\\\x80-\xff\n\015()] * # normal*
722 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
723 \) # )
724 ) # special
725 [^\\\x80-\xff\n\015()] * # normal*
726 )* # )*
727 \) # )
728 [\040\t]* )* # If comment found, allow more spaces.
729 (?:
730 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
731 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
732 # Atom
733 | # or
734 " # "
735 [^\\\x80-\xff\n\015"] * # normal
736 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
737 " # "
738 # Quoted string
739 )
740 [\040\t]* # Nab whitespace.
741 (?:
742 \( # (
743 [^\\\x80-\xff\n\015()] * # normal*
744 (?: # (
745 (?: \\ [^\x80-\xff] |
746 \( # (
747 [^\\\x80-\xff\n\015()] * # normal*
748 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
749 \) # )
750 ) # special
751 [^\\\x80-\xff\n\015()] * # normal*
752 )* # )*
753 \) # )
754 [\040\t]* )* # If comment found, allow more spaces.
755 # additional words
756 )*
757 @
758 [\040\t]* # Nab whitespace.
759 (?:
760 \( # (
761 [^\\\x80-\xff\n\015()] * # normal*
762 (?: # (
763 (?: \\ [^\x80-\xff] |
764 \( # (
765 [^\\\x80-\xff\n\015()] * # normal*
766 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
767 \) # )
768 ) # special
769 [^\\\x80-\xff\n\015()] * # normal*
770 )* # )*
771 \) # )
772 [\040\t]* )* # If comment found, allow more spaces.
773 (?:
774 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
775 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
776 |
777 \[ # [
778 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
779 \] # ]
780 )
781 [\040\t]* # Nab whitespace.
782 (?:
783 \( # (
784 [^\\\x80-\xff\n\015()] * # normal*
785 (?: # (
786 (?: \\ [^\x80-\xff] |
787 \( # (
788 [^\\\x80-\xff\n\015()] * # normal*
789 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
790 \) # )
791 ) # special
792 [^\\\x80-\xff\n\015()] * # normal*
793 )* # )*
794 \) # )
795 [\040\t]* )* # If comment found, allow more spaces.
796 # optional trailing comments
797 (?:
798 \.
799 [\040\t]* # Nab whitespace.
800 (?:
801 \( # (
802 [^\\\x80-\xff\n\015()] * # normal*
803 (?: # (
804 (?: \\ [^\x80-\xff] |
805 \( # (
806 [^\\\x80-\xff\n\015()] * # normal*
807 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
808 \) # )
809 ) # special
810 [^\\\x80-\xff\n\015()] * # normal*
811 )* # )*
812 \) # )
813 [\040\t]* )* # If comment found, allow more spaces.
814 (?:
815 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
816 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
817 |
818 \[ # [
819 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
820 \] # ]
821 )
822 [\040\t]* # Nab whitespace.
823 (?:
824 \( # (
825 [^\\\x80-\xff\n\015()] * # normal*
826 (?: # (
827 (?: \\ [^\x80-\xff] |
828 \( # (
829 [^\\\x80-\xff\n\015()] * # normal*
830 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
831 \) # )
832 ) # special
833 [^\\\x80-\xff\n\015()] * # normal*
834 )* # )*
835 \) # )
836 [\040\t]* )* # If comment found, allow more spaces.
837 # optional trailing comments
838 )*
839 # address
840 | # or
841 (?:
842 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
843 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
844 # Atom
845 | # or
846 " # "
847 [^\\\x80-\xff\n\015"] * # normal
848 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
849 " # "
850 # Quoted string
851 )
852 # leading word
853 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
854 (?:
855 (?:
856 \( # (
857 [^\\\x80-\xff\n\015()] * # normal*
858 (?: # (
859 (?: \\ [^\x80-\xff] |
860 \( # (
861 [^\\\x80-\xff\n\015()] * # normal*
862 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
863 \) # )
864 ) # special
865 [^\\\x80-\xff\n\015()] * # normal*
866 )* # )*
867 \) # )
868 |
869 " # "
870 [^\\\x80-\xff\n\015"] * # normal
871 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
872 " # "
873 ) # "special" comment or quoted string
874 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
875 )*
876 <
877 [\040\t]* # Nab whitespace.
878 (?:
879 \( # (
880 [^\\\x80-\xff\n\015()] * # normal*
881 (?: # (
882 (?: \\ [^\x80-\xff] |
883 \( # (
884 [^\\\x80-\xff\n\015()] * # normal*
885 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
886 \) # )
887 ) # special
888 [^\\\x80-\xff\n\015()] * # normal*
889 )* # )*
890 \) # )
891 [\040\t]* )* # If comment found, allow more spaces.
892 # <
893 (?:
894 @
895 [\040\t]* # Nab whitespace.
896 (?:
897 \( # (
898 [^\\\x80-\xff\n\015()] * # normal*
899 (?: # (
900 (?: \\ [^\x80-\xff] |
901 \( # (
902 [^\\\x80-\xff\n\015()] * # normal*
903 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
904 \) # )
905 ) # special
906 [^\\\x80-\xff\n\015()] * # normal*
907 )* # )*
908 \) # )
909 [\040\t]* )* # If comment found, allow more spaces.
910 (?:
911 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
912 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
913 |
914 \[ # [
915 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
916 \] # ]
917 )
918 [\040\t]* # Nab whitespace.
919 (?:
920 \( # (
921 [^\\\x80-\xff\n\015()] * # normal*
922 (?: # (
923 (?: \\ [^\x80-\xff] |
924 \( # (
925 [^\\\x80-\xff\n\015()] * # normal*
926 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
927 \) # )
928 ) # special
929 [^\\\x80-\xff\n\015()] * # normal*
930 )* # )*
931 \) # )
932 [\040\t]* )* # If comment found, allow more spaces.
933 # optional trailing comments
934 (?:
935 \.
936 [\040\t]* # Nab whitespace.
937 (?:
938 \( # (
939 [^\\\x80-\xff\n\015()] * # normal*
940 (?: # (
941 (?: \\ [^\x80-\xff] |
942 \( # (
943 [^\\\x80-\xff\n\015()] * # normal*
944 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
945 \) # )
946 ) # special
947 [^\\\x80-\xff\n\015()] * # normal*
948 )* # )*
949 \) # )
950 [\040\t]* )* # If comment found, allow more spaces.
951 (?:
952 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
953 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
954 |
955 \[ # [
956 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
957 \] # ]
958 )
959 [\040\t]* # Nab whitespace.
960 (?:
961 \( # (
962 [^\\\x80-\xff\n\015()] * # normal*
963 (?: # (
964 (?: \\ [^\x80-\xff] |
965 \( # (
966 [^\\\x80-\xff\n\015()] * # normal*
967 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
968 \) # )
969 ) # special
970 [^\\\x80-\xff\n\015()] * # normal*
971 )* # )*
972 \) # )
973 [\040\t]* )* # If comment found, allow more spaces.
974 # optional trailing comments
975 )*
976 (?: ,
977 [\040\t]* # Nab whitespace.
978 (?:
979 \( # (
980 [^\\\x80-\xff\n\015()] * # normal*
981 (?: # (
982 (?: \\ [^\x80-\xff] |
983 \( # (
984 [^\\\x80-\xff\n\015()] * # normal*
985 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
986 \) # )
987 ) # special
988 [^\\\x80-\xff\n\015()] * # normal*
989 )* # )*
990 \) # )
991 [\040\t]* )* # If comment found, allow more spaces.
992 @
993 [\040\t]* # Nab whitespace.
994 (?:
995 \( # (
996 [^\\\x80-\xff\n\015()] * # normal*
997 (?: # (
998 (?: \\ [^\x80-\xff] |
999 \( # (
1000 [^\\\x80-\xff\n\015()] * # normal*
1001 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1002 \) # )
1003 ) # special
1004 [^\\\x80-\xff\n\015()] * # normal*
1005 )* # )*
1006 \) # )
1007 [\040\t]* )* # If comment found, allow more spaces.
1008 (?:
1009 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1010 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1011 |
1012 \[ # [
1013 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1014 \] # ]
1015 )
1016 [\040\t]* # Nab whitespace.
1017 (?:
1018 \( # (
1019 [^\\\x80-\xff\n\015()] * # normal*
1020 (?: # (
1021 (?: \\ [^\x80-\xff] |
1022 \( # (
1023 [^\\\x80-\xff\n\015()] * # normal*
1024 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1025 \) # )
1026 ) # special
1027 [^\\\x80-\xff\n\015()] * # normal*
1028 )* # )*
1029 \) # )
1030 [\040\t]* )* # If comment found, allow more spaces.
1031 # optional trailing comments
1032 (?:
1033 \.
1034 [\040\t]* # Nab whitespace.
1035 (?:
1036 \( # (
1037 [^\\\x80-\xff\n\015()] * # normal*
1038 (?: # (
1039 (?: \\ [^\x80-\xff] |
1040 \( # (
1041 [^\\\x80-\xff\n\015()] * # normal*
1042 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1043 \) # )
1044 ) # special
1045 [^\\\x80-\xff\n\015()] * # normal*
1046 )* # )*
1047 \) # )
1048 [\040\t]* )* # If comment found, allow more spaces.
1049 (?:
1050 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1051 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1052 |
1053 \[ # [
1054 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1055 \] # ]
1056 )
1057 [\040\t]* # Nab whitespace.
1058 (?:
1059 \( # (
1060 [^\\\x80-\xff\n\015()] * # normal*
1061 (?: # (
1062 (?: \\ [^\x80-\xff] |
1063 \( # (
1064 [^\\\x80-\xff\n\015()] * # normal*
1065 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1066 \) # )
1067 ) # special
1068 [^\\\x80-\xff\n\015()] * # normal*
1069 )* # )*
1070 \) # )
1071 [\040\t]* )* # If comment found, allow more spaces.
1072 # optional trailing comments
1073 )*
1074 )* # additional domains
1075 :
1076 [\040\t]* # Nab whitespace.
1077 (?:
1078 \( # (
1079 [^\\\x80-\xff\n\015()] * # normal*
1080 (?: # (
1081 (?: \\ [^\x80-\xff] |
1082 \( # (
1083 [^\\\x80-\xff\n\015()] * # normal*
1084 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1085 \) # )
1086 ) # special
1087 [^\\\x80-\xff\n\015()] * # normal*
1088 )* # )*
1089 \) # )
1090 [\040\t]* )* # If comment found, allow more spaces.
1091 # optional trailing comments
1092 )? # optional route
1093 (?:
1094 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1095 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1096 # Atom
1097 | # or
1098 " # "
1099 [^\\\x80-\xff\n\015"] * # normal
1100 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1101 " # "
1102 # Quoted string
1103 )
1104 [\040\t]* # Nab whitespace.
1105 (?:
1106 \( # (
1107 [^\\\x80-\xff\n\015()] * # normal*
1108 (?: # (
1109 (?: \\ [^\x80-\xff] |
1110 \( # (
1111 [^\\\x80-\xff\n\015()] * # normal*
1112 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1113 \) # )
1114 ) # special
1115 [^\\\x80-\xff\n\015()] * # normal*
1116 )* # )*
1117 \) # )
1118 [\040\t]* )* # If comment found, allow more spaces.
1119 (?:
1120 \.
1121 [\040\t]* # Nab whitespace.
1122 (?:
1123 \( # (
1124 [^\\\x80-\xff\n\015()] * # normal*
1125 (?: # (
1126 (?: \\ [^\x80-\xff] |
1127 \( # (
1128 [^\\\x80-\xff\n\015()] * # normal*
1129 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1130 \) # )
1131 ) # special
1132 [^\\\x80-\xff\n\015()] * # normal*
1133 )* # )*
1134 \) # )
1135 [\040\t]* )* # If comment found, allow more spaces.
1136 (?:
1137 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1138 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1139 # Atom
1140 | # or
1141 " # "
1142 [^\\\x80-\xff\n\015"] * # normal
1143 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1144 " # "
1145 # Quoted string
1146 )
1147 [\040\t]* # Nab whitespace.
1148 (?:
1149 \( # (
1150 [^\\\x80-\xff\n\015()] * # normal*
1151 (?: # (
1152 (?: \\ [^\x80-\xff] |
1153 \( # (
1154 [^\\\x80-\xff\n\015()] * # normal*
1155 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1156 \) # )
1157 ) # special
1158 [^\\\x80-\xff\n\015()] * # normal*
1159 )* # )*
1160 \) # )
1161 [\040\t]* )* # If comment found, allow more spaces.
1162 # additional words
1163 )*
1164 @
1165 [\040\t]* # Nab whitespace.
1166 (?:
1167 \( # (
1168 [^\\\x80-\xff\n\015()] * # normal*
1169 (?: # (
1170 (?: \\ [^\x80-\xff] |
1171 \( # (
1172 [^\\\x80-\xff\n\015()] * # normal*
1173 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1174 \) # )
1175 ) # special
1176 [^\\\x80-\xff\n\015()] * # normal*
1177 )* # )*
1178 \) # )
1179 [\040\t]* )* # If comment found, allow more spaces.
1180 (?:
1181 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1182 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1183 |
1184 \[ # [
1185 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1186 \] # ]
1187 )
1188 [\040\t]* # Nab whitespace.
1189 (?:
1190 \( # (
1191 [^\\\x80-\xff\n\015()] * # normal*
1192 (?: # (
1193 (?: \\ [^\x80-\xff] |
1194 \( # (
1195 [^\\\x80-\xff\n\015()] * # normal*
1196 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1197 \) # )
1198 ) # special
1199 [^\\\x80-\xff\n\015()] * # normal*
1200 )* # )*
1201 \) # )
1202 [\040\t]* )* # If comment found, allow more spaces.
1203 # optional trailing comments
1204 (?:
1205 \.
1206 [\040\t]* # Nab whitespace.
1207 (?:
1208 \( # (
1209 [^\\\x80-\xff\n\015()] * # normal*
1210 (?: # (
1211 (?: \\ [^\x80-\xff] |
1212 \( # (
1213 [^\\\x80-\xff\n\015()] * # normal*
1214 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1215 \) # )
1216 ) # special
1217 [^\\\x80-\xff\n\015()] * # normal*
1218 )* # )*
1219 \) # )
1220 [\040\t]* )* # If comment found, allow more spaces.
1221 (?:
1222 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1223 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1224 |
1225 \[ # [
1226 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1227 \] # ]
1228 )
1229 [\040\t]* # Nab whitespace.
1230 (?:
1231 \( # (
1232 [^\\\x80-\xff\n\015()] * # normal*
1233 (?: # (
1234 (?: \\ [^\x80-\xff] |
1235 \( # (
1236 [^\\\x80-\xff\n\015()] * # normal*
1237 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1238 \) # )
1239 ) # special
1240 [^\\\x80-\xff\n\015()] * # normal*
1241 )* # )*
1242 \) # )
1243 [\040\t]* )* # If comment found, allow more spaces.
1244 # optional trailing comments
1245 )*
1246 # address spec
1247 > # >
1248 # name and address
1249 )
1250 /x
1251 Alan Other <user\@dom.ain>
1252 <user\@dom.ain>
1253 user\@dom.ain
1254 \"A. Other\" <user.1234\@dom.ain> (a comment)
1255 A. Other <user.1234\@dom.ain> (a comment)
1256 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1257 A missing angle <user\@some.where
1258 *** Failers
1259 The quick brown fox
1260
1261 /abc\0def\00pqr\000xyz\0000AB/
1262 abc\0def\00pqr\000xyz\0000AB
1263 abc456 abc\0def\00pqr\000xyz\0000ABCDE
1264
1265 /abc\x0def\x00pqr\x000xyz\x0000AB/
1266 abc\x0def\x00pqr\x000xyz\x0000AB
1267 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1268
1269 /^[\000-\037]/
1270 \0A
1271 \01B
1272 \037C
1273
1274 /\0*/
1275 \0\0\0\0
1276
1277 /A\x0{2,3}Z/
1278 The A\x0\x0Z
1279 An A\0\x0\0Z
1280 *** Failers
1281 A\0Z
1282 A\0\x0\0\x0Z
1283
1284 /^(cow|)\1(bell)/
1285 cowcowbell
1286 bell
1287 *** Failers
1288 cowbell
1289
1290 /^\s/
1291 \040abc
1292 \x0cabc
1293 \nabc
1294 \rabc
1295 \tabc
1296 *** Failers
1297 abc
1298
1299 /^a b
1300 c/x
1301 abc
1302
1303 /^(a|)\1*b/
1304 ab
1305 aaaab
1306 b
1307 *** Failers
1308 acb
1309
1310 /^(a|)\1+b/
1311 aab
1312 aaaab
1313 b
1314 *** Failers
1315 ab
1316
1317 /^(a|)\1?b/
1318 ab
1319 aab
1320 b
1321 *** Failers
1322 acb
1323
1324 /^(a|)\1{2}b/
1325 aaab
1326 b
1327 *** Failers
1328 ab
1329 aab
1330 aaaab
1331
1332 /^(a|)\1{2,3}b/
1333 aaab
1334 aaaab
1335 b
1336 *** Failers
1337 ab
1338 aab
1339 aaaaab
1340
1341 /ab{1,3}bc/
1342 abbbbc
1343 abbbc
1344 abbc
1345 *** Failers
1346 abc
1347 abbbbbc
1348
1349 /([^.]*)\.([^:]*):[T ]+(.*)/
1350 track1.title:TBlah blah blah
1351
1352 /([^.]*)\.([^:]*):[T ]+(.*)/i
1353 track1.title:TBlah blah blah
1354
1355 /([^.]*)\.([^:]*):[t ]+(.*)/i
1356 track1.title:TBlah blah blah
1357
1358 /^[W-c]+$/
1359 WXY_^abc
1360 ***Failers
1361 wxy
1362
1363 /^[W-c]+$/i
1364 WXY_^abc
1365 wxy_^ABC
1366
1367 /^[\x3f-\x5F]+$/i
1368 WXY_^abc
1369 wxy_^ABC
1370
1371 /^abc$/m
1372 abc
1373 qqq\nabc
1374 abc\nzzz
1375 qqq\nabc\nzzz
1376
1377 /^abc$/
1378 abc
1379 *** Failers
1380 qqq\nabc
1381 abc\nzzz
1382 qqq\nabc\nzzz
1383
1384 /\Aabc\Z/m
1385 abc
1386 abc\n
1387 *** Failers
1388 qqq\nabc
1389 abc\nzzz
1390 qqq\nabc\nzzz
1391
1392 /\A(.)*\Z/s
1393 abc\ndef
1394
1395 /\A(.)*\Z/m
1396 *** Failers
1397 abc\ndef
1398
1399 /(?:b)|(?::+)/
1400 b::c
1401 c::b
1402
1403 /[-az]+/
1404 az-
1405 *** Failers
1406 b
1407
1408 /[az-]+/
1409 za-
1410 *** Failers
1411 b
1412
1413 /[a\-z]+/
1414 a-z
1415 *** Failers
1416 b
1417
1418 /[a-z]+/
1419 abcdxyz
1420
1421 /[\d-]+/
1422 12-34
1423 *** Failers
1424 aaa
1425
1426 /[\d-z]+/
1427 12-34z
1428 *** Failers
1429 aaa
1430
1431 /\x5c/
1432 \\
1433
1434 /\x20Z/
1435 the Zoo
1436 *** Failers
1437 Zulu
1438
1439 /(abc)\1/i
1440 abcabc
1441 ABCabc
1442 abcABC
1443
1444 /ab{3cd/
1445 ab{3cd
1446
1447 /ab{3,cd/
1448 ab{3,cd
1449
1450 /ab{3,4a}cd/
1451 ab{3,4a}cd
1452
1453 /{4,5a}bc/
1454 {4,5a}bc
1455
1456 /^a.b/
1457 a\rb
1458 *** Failers
1459 a\nb
1460
1461 /abc$/
1462 abc
1463 abc\n
1464 *** Failers
1465 abc\ndef
1466
1467 /(abc)\123/
1468 abc\x53
1469
1470 /(abc)\223/
1471 abc\x93
1472
1473 /(abc)\323/
1474 abc\xd3
1475
1476 /(abc)\500/
1477 abc\x40
1478 abc\100
1479
1480 /(abc)\5000/
1481 abc\x400
1482 abc\x40\x30
1483 abc\1000
1484 abc\100\x30
1485 abc\100\060
1486 abc\100\60
1487
1488 /abc\81/
1489 abc\081
1490 abc\0\x38\x31
1491
1492 /abc\91/
1493 abc\091
1494 abc\0\x39\x31
1495
1496 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1497 abcdefghijkllS
1498
1499 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1500 abcdefghijk\12S
1501
1502 /ab\gdef/
1503 abgdef
1504
1505 /a{0}bc/
1506 bc
1507
1508 /(a|(bc)){0,0}?xyz/
1509 xyz
1510
1511 /abc[\10]de/
1512 abc\010de
1513
1514 /abc[\1]de/
1515 abc\1de
1516
1517 /(abc)[\1]de/
1518 abc\1de
1519
1520 /a.b(?s)/
1521 a\nb
1522
1523 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1524 baNOTccccd
1525 baNOTcccd
1526 baNOTccd
1527 bacccd
1528 *** Failers
1529 anything
1530 b\bc
1531 baccd
1532
1533 /[^a]/
1534 Abc
1535
1536 /[^a]/i
1537 Abc
1538
1539 /[^a]+/
1540 AAAaAbc
1541
1542 /[^a]+/i
1543 AAAaAbc
1544
1545 /[^a]+/
1546 bbb\nccc
1547
1548 /[^k]$/
1549 abc
1550 *** Failers
1551 abk
1552
1553 /[^k]{2,3}$/
1554 abc
1555 kbc
1556 kabc
1557 *** Failers
1558 abk
1559 akb
1560 akk
1561
1562 /^\d{8,}\@.+[^k]$/
1563 12345678\@a.b.c.d
1564 123456789\@x.y.z
1565 *** Failers
1566 12345678\@x.y.uk
1567 1234567\@a.b.c.d
1568
1569 /(a)\1{8,}/
1570 aaaaaaaaa
1571 aaaaaaaaaa
1572 *** Failers
1573 aaaaaaa
1574
1575 /[^a]/
1576 aaaabcd
1577 aaAabcd
1578
1579 /[^a]/i
1580 aaaabcd
1581 aaAabcd
1582
1583 /[^az]/
1584 aaaabcd
1585 aaAabcd
1586
1587 /[^az]/i
1588 aaaabcd
1589 aaAabcd
1590
1591 /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
1592 \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
1593
1594 /P[^*]TAIRE[^*]{1,6}?LL/
1595 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1596
1597 /P[^*]TAIRE[^*]{1,}?LL/
1598 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1599
1600 /(\.\d\d[1-9]?)\d+/
1601 1.230003938
1602 1.875000282
1603 1.235
1604
1605 /(\.\d\d((?=0)|\d(?=\d)))/
1606 1.230003938
1607 1.875000282
1608 *** Failers
1609 1.235
1610
1611 /a(?)b/
1612 ab
1613
1614 /\b(foo)\s+(\w+)/i
1615 Food is on the foo table
1616
1617 /foo(.*)bar/
1618 The food is under the bar in the barn.
1619
1620 /foo(.*?)bar/
1621 The food is under the bar in the barn.
1622
1623 /(.*)(\d*)/
1624 I have 2 numbers: 53147
1625
1626 /(.*)(\d+)/
1627 I have 2 numbers: 53147
1628
1629 /(.*?)(\d*)/
1630 I have 2 numbers: 53147
1631
1632 /(.*?)(\d+)/
1633 I have 2 numbers: 53147
1634
1635 /(.*)(\d+)$/
1636 I have 2 numbers: 53147
1637
1638 /(.*?)(\d+)$/
1639 I have 2 numbers: 53147
1640
1641 /(.*)\b(\d+)$/
1642 I have 2 numbers: 53147
1643
1644 /(.*\D)(\d+)$/
1645 I have 2 numbers: 53147
1646
1647 /^\D*(?!123)/
1648 ABC123
1649
1650 /^(\D*)(?=\d)(?!123)/
1651 ABC445
1652 *** Failers
1653 ABC123
1654
1655 /^[W-]46]/
1656 W46]789
1657 -46]789
1658 *** Failers
1659 Wall
1660 Zebra
1661 42
1662 [abcd]
1663 ]abcd[
1664
1665 /^[W-\]46]/
1666 W46]789
1667 Wall
1668 Zebra
1669 Xylophone
1670 42
1671 [abcd]
1672 ]abcd[
1673 \\backslash
1674 *** Failers
1675 -46]789
1676 well
1677
1678 /\d\d\/\d\d\/\d\d\d\d/
1679 01/01/2000
1680
1681 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
1682 word cat dog elephant mussel cow horse canary baboon snake shark otherword
1683 word cat dog elephant mussel cow horse canary baboon snake shark
1684
1685 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
1686 word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
1687
1688 /^(a){0,0}/
1689 bcd
1690 abc
1691 aab
1692
1693 /^(a){0,1}/
1694 bcd
1695 abc
1696 aab
1697
1698 /^(a){0,2}/
1699 bcd
1700 abc
1701 aab
1702
1703 /^(a){0,3}/
1704 bcd
1705 abc
1706 aab
1707 aaa
1708
1709 /^(a){0,}/
1710 bcd
1711 abc
1712 aab
1713 aaa
1714 aaaaaaaa
1715
1716 /^(a){1,1}/
1717 bcd
1718 abc
1719 aab
1720
1721 /^(a){1,2}/
1722 bcd
1723 abc
1724 aab
1725
1726 /^(a){1,3}/
1727 bcd
1728 abc
1729 aab
1730 aaa
1731
1732 /^(a){1,}/
1733 bcd
1734 abc
1735 aab
1736 aaa
1737 aaaaaaaa
1738
1739 /.*\.gif/
1740 borfle\nbib.gif\nno
1741
1742 /.{0,}\.gif/
1743 borfle\nbib.gif\nno
1744
1745 /.*\.gif/m
1746 borfle\nbib.gif\nno
1747
1748 /.*\.gif/s
1749 borfle\nbib.gif\nno
1750
1751 /.*\.gif/ms
1752 borfle\nbib.gif\nno
1753
1754 /.*$/
1755 borfle\nbib.gif\nno
1756
1757 /.*$/m
1758 borfle\nbib.gif\nno
1759
1760 /.*$/s
1761 borfle\nbib.gif\nno
1762
1763 /.*$/ms
1764 borfle\nbib.gif\nno
1765
1766 /.*$/
1767 borfle\nbib.gif\nno\n
1768
1769 /.*$/m
1770 borfle\nbib.gif\nno\n
1771
1772 /.*$/s
1773 borfle\nbib.gif\nno\n
1774
1775 /.*$/ms
1776 borfle\nbib.gif\nno\n
1777
1778 /(.*X|^B)/
1779 abcde\n1234Xyz
1780 BarFoo
1781 *** Failers
1782 abcde\nBar
1783
1784 /(.*X|^B)/m
1785 abcde\n1234Xyz
1786 BarFoo
1787 abcde\nBar
1788
1789 /(.*X|^B)/s
1790 abcde\n1234Xyz
1791 BarFoo
1792 *** Failers
1793 abcde\nBar
1794
1795 /(.*X|^B)/ms
1796 abcde\n1234Xyz
1797 BarFoo
1798 abcde\nBar
1799
1800 /(?s)(.*X|^B)/
1801 abcde\n1234Xyz
1802 BarFoo
1803 *** Failers
1804 abcde\nBar
1805
1806 /(?s:.*X|^B)/
1807 abcde\n1234Xyz
1808 BarFoo
1809 *** Failers
1810 abcde\nBar
1811
1812 /^.*B/
1813 **** Failers
1814 abc\nB
1815
1816 /(?s)^.*B/
1817 abc\nB
1818
1819 /(?m)^.*B/
1820 abc\nB
1821
1822 /(?ms)^.*B/
1823 abc\nB
1824
1825 /(?ms)^B/
1826 abc\nB
1827
1828 /(?s)B$/
1829 B\n
1830
1831 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
1832 123456654321
1833
1834 /^\d\d\d\d\d\d\d\d\d\d\d\d/
1835 123456654321
1836
1837 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
1838 123456654321
1839
1840 /^[abc]{12}/
1841 abcabcabcabc
1842
1843 /^[a-c]{12}/
1844 abcabcabcabc
1845
1846 /^(a|b|c){12}/
1847 abcabcabcabc
1848
1849 /^[abcdefghijklmnopqrstuvwxy0123456789]/
1850 n
1851 *** Failers
1852 z
1853
1854 /abcde{0,0}/
1855 abcd
1856 *** Failers
1857 abce
1858
1859 /ab[cd]{0,0}e/
1860 abe
1861 *** Failers
1862 abcde
1863
1864 /ab(c){0,0}d/
1865 abd
1866 *** Failers
1867 abcd
1868
1869 /a(b*)/
1870 a
1871 ab
1872 abbbb
1873 *** Failers
1874 bbbbb
1875
1876 /ab\d{0}e/
1877 abe
1878 *** Failers
1879 ab1e
1880
1881 /"([^\\"]+|\\.)*"/
1882 the \"quick\" brown fox
1883 \"the \\\"quick\\\" brown fox\"
1884
1885 /.*?/g+
1886 abc
1887
1888 /\b/g+
1889 abc
1890
1891 /\b/+g
1892 abc
1893
1894 //g
1895 abc
1896
1897 /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
1898 <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
1899
1900 /a[^a]b/
1901 acb
1902 a\nb
1903
1904 /a.b/
1905 acb
1906 *** Failers
1907 a\nb
1908
1909 /a[^a]b/s
1910 acb
1911 a\nb
1912
1913 /a.b/s
1914 acb
1915 a\nb
1916
1917 /^(b+?|a){1,2}?c/
1918 bac
1919 bbac
1920 bbbac
1921 bbbbac
1922 bbbbbac
1923
1924 /^(b+|a){1,2}?c/
1925 bac
1926 bbac
1927 bbbac
1928 bbbbac
1929 bbbbbac
1930
1931 /(?!\A)x/m
1932 x\nb\n
1933 a\bx\n
1934
1935 /\x0{ab}/
1936 \0{ab}
1937
1938 /(A|B)*?CD/
1939 CD
1940
1941 /(A|B)*CD/
1942 CD
1943
1944 /(AB)*?\1/
1945 ABABAB
1946
1947 /(AB)*\1/
1948 ABABAB
1949
1950 / End of testinput1 /

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12