/[pcre]/code/tags/pcre-1.07/testinput
ViewVC logotype

Contents of /code/tags/pcre-1.07/testinput

Parent Directory Parent Directory | Revision Log Revision Log


Revision 18 - (show annotations) (download)
Sat Feb 24 21:38:31 2007 UTC (7 years, 9 months ago) by nigel
File size: 48592 byte(s)
Tag code/trunk as code/tags/pcre-1.07.

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 *** Failers
1387 qqq\nabc
1388 abc\nzzz
1389 qqq\nabc\nzzz
1390
1391 /\A(.)*\Z/s
1392 abc\ndef
1393
1394 /\A(.)*\Z/m
1395 *** Failers
1396 abc\ndef
1397
1398 /(?:b)|(?::+)/
1399 b::c
1400 c::b
1401
1402 /[-az]+/
1403 az-
1404 *** Failers
1405 b
1406
1407 /[az-]+/
1408 za-
1409 *** Failers
1410 b
1411
1412 /[a\-z]+/
1413 a-z
1414 *** Failers
1415 b
1416
1417 /[a-z]+/
1418 abcdxyz
1419
1420 /[\d-]+/
1421 12-34
1422 *** Failers
1423 aaa
1424
1425 /[\d-z]+/
1426 12-34z
1427 *** Failers
1428 aaa
1429
1430 /\x5c/
1431 \\
1432
1433 /\x20Z/
1434 the Zoo
1435 *** Failers
1436 Zulu
1437
1438 /(abc)\1/i
1439 abcabc
1440 ABCabc
1441 abcABC
1442
1443 /(main(OPT)?)+/
1444 mainmain
1445 mainOPTmain
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 /^a.b/
1460 a\rb
1461 *** Failers
1462 a\nb
1463
1464 /abc$/
1465 abc
1466 abc\n
1467 *** Failers
1468 abc\ndef
1469
1470 /(abc)\123/
1471 abc\x53
1472
1473 /(abc)\223/
1474 abc\x93
1475
1476 /(abc)\323/
1477 abc\xd3
1478
1479 /(abc)\500/
1480 abc\x40
1481 abc\100
1482
1483 /(abc)\5000/
1484 abc\x400
1485 abc\x40\x30
1486 abc\1000
1487 abc\100\x30
1488 abc\100\060
1489 abc\100\60
1490
1491 /abc\81/
1492 abc\081
1493 abc\0\x38\x31
1494
1495 /abc\91/
1496 abc\091
1497 abc\0\x39\x31
1498
1499 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1500 abcdefghijkllS
1501
1502 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1503 abcdefghijk\12S
1504
1505 /ab\gdef/
1506 abgdef
1507
1508 /a{0}bc/
1509 bc
1510
1511 /(a|(bc)){0,0}?xyz/
1512 xyz
1513
1514 /abc[\10]de/
1515 abc\010de
1516
1517 /abc[\1]de/
1518 abc\1de
1519
1520 /(abc)[\1]de/
1521 abc\1de
1522
1523 /a.b(?s)/
1524 a\nb
1525
1526 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1527 baNOTccccd
1528 baNOTcccd
1529 baNOTccd
1530 bacccd
1531 *** Failers
1532 anything
1533 b\bc
1534 baccd
1535
1536 /[^a]/
1537 Abc
1538
1539 /[^a]/i
1540 Abc
1541
1542 /[^a]+/
1543 AAAaAbc
1544
1545 /[^a]+/i
1546 AAAaAbc
1547
1548 /[^a]+/
1549 bbb\nccc
1550
1551 /[^k]$/
1552 abc
1553 *** Failers
1554 abk
1555
1556 /[^k]{2,3}$/
1557 abc
1558 kbc
1559 kabc
1560 *** Failers
1561 abk
1562 akb
1563 akk
1564
1565 /^\d{8,}\@.+[^k]$/
1566 12345678\@a.b.c.d
1567 123456789\@x.y.z
1568 *** Failers
1569 12345678\@x.y.uk
1570 1234567\@a.b.c.d
1571
1572 /(a)\1{8,}/
1573 aaaaaaaaa
1574 aaaaaaaaaa
1575 *** Failers
1576 aaaaaaa
1577
1578 /[^a]/
1579 aaaabcd
1580 aaAabcd
1581
1582 /[^a]/i
1583 aaaabcd
1584 aaAabcd
1585
1586 /[^az]/
1587 aaaabcd
1588 aaAabcd
1589
1590 /[^az]/i
1591 aaaabcd
1592 aaAabcd
1593
1594 /\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/
1595 \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
1596
1597 / End of test input /

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12