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

Contents of /code/trunk/testdata/testinput1

Parent Directory Parent Directory | Revision Log Revision Log


Revision 49 - (show annotations) (download)
Sat Feb 24 21:39:33 2007 UTC (7 years, 1 month ago) by nigel
File size: 53104 byte(s)
Load pcre-3.3 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 /(main(O)?)+/
1445 mainmain
1446 mainOmain
1447
1448 /ab{3cd/
1449 ab{3cd
1450
1451 /ab{3,cd/
1452 ab{3,cd
1453
1454 /ab{3,4a}cd/
1455 ab{3,4a}cd
1456
1457 /{4,5a}bc/
1458 {4,5a}bc
1459
1460 /^a.b/
1461 a\rb
1462 *** Failers
1463 a\nb
1464
1465 /abc$/
1466 abc
1467 abc\n
1468 *** Failers
1469 abc\ndef
1470
1471 /(abc)\123/
1472 abc\x53
1473
1474 /(abc)\223/
1475 abc\x93
1476
1477 /(abc)\323/
1478 abc\xd3
1479
1480 /(abc)\500/
1481 abc\x40
1482 abc\100
1483
1484 /(abc)\5000/
1485 abc\x400
1486 abc\x40\x30
1487 abc\1000
1488 abc\100\x30
1489 abc\100\060
1490 abc\100\60
1491
1492 /abc\81/
1493 abc\081
1494 abc\0\x38\x31
1495
1496 /abc\91/
1497 abc\091
1498 abc\0\x39\x31
1499
1500 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1501 abcdefghijkllS
1502
1503 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1504 abcdefghijk\12S
1505
1506 /ab\gdef/
1507 abgdef
1508
1509 /a{0}bc/
1510 bc
1511
1512 /(a|(bc)){0,0}?xyz/
1513 xyz
1514
1515 /abc[\10]de/
1516 abc\010de
1517
1518 /abc[\1]de/
1519 abc\1de
1520
1521 /(abc)[\1]de/
1522 abc\1de
1523
1524 /a.b(?s)/
1525 a\nb
1526
1527 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1528 baNOTccccd
1529 baNOTcccd
1530 baNOTccd
1531 bacccd
1532 *** Failers
1533 anything
1534 b\bc
1535 baccd
1536
1537 /[^a]/
1538 Abc
1539
1540 /[^a]/i
1541 Abc
1542
1543 /[^a]+/
1544 AAAaAbc
1545
1546 /[^a]+/i
1547 AAAaAbc
1548
1549 /[^a]+/
1550 bbb\nccc
1551
1552 /[^k]$/
1553 abc
1554 *** Failers
1555 abk
1556
1557 /[^k]{2,3}$/
1558 abc
1559 kbc
1560 kabc
1561 *** Failers
1562 abk
1563 akb
1564 akk
1565
1566 /^\d{8,}\@.+[^k]$/
1567 12345678\@a.b.c.d
1568 123456789\@x.y.z
1569 *** Failers
1570 12345678\@x.y.uk
1571 1234567\@a.b.c.d
1572
1573 /(a)\1{8,}/
1574 aaaaaaaaa
1575 aaaaaaaaaa
1576 *** Failers
1577 aaaaaaa
1578
1579 /[^a]/
1580 aaaabcd
1581 aaAabcd
1582
1583 /[^a]/i
1584 aaaabcd
1585 aaAabcd
1586
1587 /[^az]/
1588 aaaabcd
1589 aaAabcd
1590
1591 /[^az]/i
1592 aaaabcd
1593 aaAabcd
1594
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 \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
1597
1598 /P[^*]TAIRE[^*]{1,6}?LL/
1599 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1600
1601 /P[^*]TAIRE[^*]{1,}?LL/
1602 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1603
1604 /(\.\d\d[1-9]?)\d+/
1605 1.230003938
1606 1.875000282
1607 1.235
1608
1609 /(\.\d\d((?=0)|\d(?=\d)))/
1610 1.230003938
1611 1.875000282
1612 *** Failers
1613 1.235
1614
1615 /a(?)b/
1616 ab
1617
1618 /\b(foo)\s+(\w+)/i
1619 Food is on the foo table
1620
1621 /foo(.*)bar/
1622 The food is under the bar in the barn.
1623
1624 /foo(.*?)bar/
1625 The food is under the bar in the barn.
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 /(.*)(\d+)$/
1640 I have 2 numbers: 53147
1641
1642 /(.*?)(\d+)$/
1643 I have 2 numbers: 53147
1644
1645 /(.*)\b(\d+)$/
1646 I have 2 numbers: 53147
1647
1648 /(.*\D)(\d+)$/
1649 I have 2 numbers: 53147
1650
1651 /^\D*(?!123)/
1652 ABC123
1653
1654 /^(\D*)(?=\d)(?!123)/
1655 ABC445
1656 *** Failers
1657 ABC123
1658
1659 /^[W-]46]/
1660 W46]789
1661 -46]789
1662 *** Failers
1663 Wall
1664 Zebra
1665 42
1666 [abcd]
1667 ]abcd[
1668
1669 /^[W-\]46]/
1670 W46]789
1671 Wall
1672 Zebra
1673 Xylophone
1674 42
1675 [abcd]
1676 ]abcd[
1677 \\backslash
1678 *** Failers
1679 -46]789
1680 well
1681
1682 /\d\d\/\d\d\/\d\d\d\d/
1683 01/01/2000
1684
1685 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
1686 word cat dog elephant mussel cow horse canary baboon snake shark otherword
1687 word cat dog elephant mussel cow horse canary baboon snake shark
1688
1689 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
1690 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
1691
1692 /^(a){0,0}/
1693 bcd
1694 abc
1695 aab
1696
1697 /^(a){0,1}/
1698 bcd
1699 abc
1700 aab
1701
1702 /^(a){0,2}/
1703 bcd
1704 abc
1705 aab
1706
1707 /^(a){0,3}/
1708 bcd
1709 abc
1710 aab
1711 aaa
1712
1713 /^(a){0,}/
1714 bcd
1715 abc
1716 aab
1717 aaa
1718 aaaaaaaa
1719
1720 /^(a){1,1}/
1721 bcd
1722 abc
1723 aab
1724
1725 /^(a){1,2}/
1726 bcd
1727 abc
1728 aab
1729
1730 /^(a){1,3}/
1731 bcd
1732 abc
1733 aab
1734 aaa
1735
1736 /^(a){1,}/
1737 bcd
1738 abc
1739 aab
1740 aaa
1741 aaaaaaaa
1742
1743 /.*\.gif/
1744 borfle\nbib.gif\nno
1745
1746 /.{0,}\.gif/
1747 borfle\nbib.gif\nno
1748
1749 /.*\.gif/m
1750 borfle\nbib.gif\nno
1751
1752 /.*\.gif/s
1753 borfle\nbib.gif\nno
1754
1755 /.*\.gif/ms
1756 borfle\nbib.gif\nno
1757
1758 /.*$/
1759 borfle\nbib.gif\nno
1760
1761 /.*$/m
1762 borfle\nbib.gif\nno
1763
1764 /.*$/s
1765 borfle\nbib.gif\nno
1766
1767 /.*$/ms
1768 borfle\nbib.gif\nno
1769
1770 /.*$/
1771 borfle\nbib.gif\nno\n
1772
1773 /.*$/m
1774 borfle\nbib.gif\nno\n
1775
1776 /.*$/s
1777 borfle\nbib.gif\nno\n
1778
1779 /.*$/ms
1780 borfle\nbib.gif\nno\n
1781
1782 /(.*X|^B)/
1783 abcde\n1234Xyz
1784 BarFoo
1785 *** Failers
1786 abcde\nBar
1787
1788 /(.*X|^B)/m
1789 abcde\n1234Xyz
1790 BarFoo
1791 abcde\nBar
1792
1793 /(.*X|^B)/s
1794 abcde\n1234Xyz
1795 BarFoo
1796 *** Failers
1797 abcde\nBar
1798
1799 /(.*X|^B)/ms
1800 abcde\n1234Xyz
1801 BarFoo
1802 abcde\nBar
1803
1804 /(?s)(.*X|^B)/
1805 abcde\n1234Xyz
1806 BarFoo
1807 *** Failers
1808 abcde\nBar
1809
1810 /(?s:.*X|^B)/
1811 abcde\n1234Xyz
1812 BarFoo
1813 *** Failers
1814 abcde\nBar
1815
1816 /^.*B/
1817 **** Failers
1818 abc\nB
1819
1820 /(?s)^.*B/
1821 abc\nB
1822
1823 /(?m)^.*B/
1824 abc\nB
1825
1826 /(?ms)^.*B/
1827 abc\nB
1828
1829 /(?ms)^B/
1830 abc\nB
1831
1832 /(?s)B$/
1833 B\n
1834
1835 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
1836 123456654321
1837
1838 /^\d\d\d\d\d\d\d\d\d\d\d\d/
1839 123456654321
1840
1841 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
1842 123456654321
1843
1844 /^[abc]{12}/
1845 abcabcabcabc
1846
1847 /^[a-c]{12}/
1848 abcabcabcabc
1849
1850 /^(a|b|c){12}/
1851 abcabcabcabc
1852
1853 /^[abcdefghijklmnopqrstuvwxy0123456789]/
1854 n
1855 *** Failers
1856 z
1857
1858 /abcde{0,0}/
1859 abcd
1860 *** Failers
1861 abce
1862
1863 /ab[cd]{0,0}e/
1864 abe
1865 *** Failers
1866 abcde
1867
1868 /ab(c){0,0}d/
1869 abd
1870 *** Failers
1871 abcd
1872
1873 /a(b*)/
1874 a
1875 ab
1876 abbbb
1877 *** Failers
1878 bbbbb
1879
1880 /ab\d{0}e/
1881 abe
1882 *** Failers
1883 ab1e
1884
1885 /"([^\\"]+|\\.)*"/
1886 the \"quick\" brown fox
1887 \"the \\\"quick\\\" brown fox\"
1888
1889 /.*?/g+
1890 abc
1891
1892 /\b/g+
1893 abc
1894
1895 /\b/+g
1896 abc
1897
1898 //g
1899 abc
1900
1901 /<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
1902 <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>
1903
1904 /a[^a]b/
1905 acb
1906 a\nb
1907
1908 /a.b/
1909 acb
1910 *** Failers
1911 a\nb
1912
1913 /a[^a]b/s
1914 acb
1915 a\nb
1916
1917 /a.b/s
1918 acb
1919 a\nb
1920
1921 / End of testinput1 /

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12