A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.
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 /abc$/ 1457 abc 1458 abc\n 1459 *** Failers 1460 abc\ndef 1461 1462 /(abc)\123/ 1463 abc\x53 1464 1465 /(abc)\223/ 1466 abc\x93 1467 1468 /(abc)\323/ 1469 abc\xd3 1470 1471 /(abc)\100/ 1472 abc\x40 1473 abc\100 1474 1475 /(abc)\1000/ 1476 abc\x400 1477 abc\x40\x30 1478 abc\1000 1479 abc\100\x30 1480 abc\100\060 1481 abc\100\60 1482 1483 /abc\81/ 1484 abc\081 1485 abc\0\x38\x31 1486 1487 /abc\91/ 1488 abc\091 1489 abc\0\x39\x31 1490 1491 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/ 1492 abcdefghijkllS 1493 1494 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/ 1495 abcdefghijk\12S 1496 1497 /ab\hdef/ 1498 abhdef 1499 1500 /a{0}bc/ 1501 bc 1502 1503 /(a|(bc)){0,0}?xyz/ 1504 xyz 1505 1506 /abc[\10]de/ 1507 abc\010de 1508 1509 /abc[\1]de/ 1510 abc\1de 1511 1512 /(abc)[\1]de/ 1513 abc\1de 1514 1515 /(?s)a.b/ 1516 a\nb 1517 1518 /^([^a])([^\b])([^c]*)([^d]{3,4})/ 1519 baNOTccccd 1520 baNOTcccd 1521 baNOTccd 1522 bacccd 1523 *** Failers 1524 anything 1525 b\bc 1526 baccd 1527 1528 /[^a]/ 1529 Abc 1530 1531 /[^a]/i 1532 Abc 1533 1534 /[^a]+/ 1535 AAAaAbc 1536 1537 /[^a]+/i 1538 AAAaAbc 1539 1540 /[^a]+/ 1541 bbb\nccc 1542 1543 /[^k]$/ 1544 abc 1545 *** Failers 1546 abk 1547 1548 /[^k]{2,3}$/ 1549 abc 1550 kbc 1551 kabc 1552 *** Failers 1553 abk 1554 akb 1555 akk 1556 1557 /^\d{8,}\@.+[^k]$/ 1558 12345678\@a.b.c.d 1559 123456789\@x.y.z 1560 *** Failers 1561 12345678\@x.y.uk 1562 1234567\@a.b.c.d 1563 1564 /(a)\1{8,}/ 1565 aaaaaaaaa 1566 aaaaaaaaaa 1567 *** Failers 1568 aaaaaaa 1569 1570 /[^a]/ 1571 aaaabcd 1572 aaAabcd 1573 1574 /[^a]/i 1575 aaaabcd 1576 aaAabcd 1577 1578 /[^az]/ 1579 aaaabcd 1580 aaAabcd 1581 1582 /[^az]/i 1583 aaaabcd 1584 aaAabcd 1585 1586 /\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/ 1587 \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 1588 1589 /P[^*]TAIRE[^*]{1,6}?LL/ 1590 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx 1591 1592 /P[^*]TAIRE[^*]{1,}?LL/ 1593 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx 1594 1595 /(\.\d\d[1-9]?)\d+/ 1596 1.230003938 1597 1.875000282 1598 1.235 1599 1600 /(\.\d\d((?=0)|\d(?=\d)))/ 1601 1.230003938 1602 1.875000282 1603 *** Failers 1604 1.235 1605 1606 /a(?)b/ 1607 ab 1608 1609 /\b(foo)\s+(\w+)/i 1610 Food is on the foo table 1611 1612 /foo(.*)bar/ 1613 The food is under the bar in the barn. 1614 1615 /foo(.*?)bar/ 1616 The food is under the bar in the barn. 1617 1618 /(.*)(\d*)/ 1619 I have 2 numbers: 53147 1620 1621 /(.*)(\d+)/ 1622 I have 2 numbers: 53147 1623 1624 /(.*?)(\d*)/ 1625 I have 2 numbers: 53147 1626 1627 /(.*?)(\d+)/ 1628 I have 2 numbers: 53147 1629 1630 /(.*)(\d+)$/ 1631 I have 2 numbers: 53147 1632 1633 /(.*?)(\d+)$/ 1634 I have 2 numbers: 53147 1635 1636 /(.*)\b(\d+)$/ 1637 I have 2 numbers: 53147 1638 1639 /(.*\D)(\d+)$/ 1640 I have 2 numbers: 53147 1641 1642 /^\D*(?!123)/ 1643 ABC123 1644 1645 /^(\D*)(?=\d)(?!123)/ 1646 ABC445 1647 *** Failers 1648 ABC123 1649 1650 /^[W-]46]/ 1651 W46]789 1652 -46]789 1653 *** Failers 1654 Wall 1655 Zebra 1656 42 1657 [abcd] 1658 ]abcd[ 1659 1660 /^[W-\]46]/ 1661 W46]789 1662 Wall 1663 Zebra 1664 Xylophone 1665 42 1666 [abcd] 1667 ]abcd[ 1668 \\backslash 1669 *** Failers 1670 -46]789 1671 well 1672 1673 /\d\d\/\d\d\/\d\d\d\d/ 1674 01/01/2000 1675 1676 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/ 1677 word cat dog elephant mussel cow horse canary baboon snake shark otherword 1678 word cat dog elephant mussel cow horse canary baboon snake shark 1679 1680 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/ 1681 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 1682 1683 /^(a){0,0}/ 1684 bcd 1685 abc 1686 aab 1687 1688 /^(a){0,1}/ 1689 bcd 1690 abc 1691 aab 1692 1693 /^(a){0,2}/ 1694 bcd 1695 abc 1696 aab 1697 1698 /^(a){0,3}/ 1699 bcd 1700 abc 1701 aab 1702 aaa 1703 1704 /^(a){0,}/ 1705 bcd 1706 abc 1707 aab 1708 aaa 1709 aaaaaaaa 1710 1711 /^(a){1,1}/ 1712 bcd 1713 abc 1714 aab 1715 1716 /^(a){1,2}/ 1717 bcd 1718 abc 1719 aab 1720 1721 /^(a){1,3}/ 1722 bcd 1723 abc 1724 aab 1725 aaa 1726 1727 /^(a){1,}/ 1728 bcd 1729 abc 1730 aab 1731 aaa 1732 aaaaaaaa 1733 1734 /.*\.gif/ 1735 borfle\nbib.gif\nno 1736 1737 /.{0,}\.gif/ 1738 borfle\nbib.gif\nno 1739 1740 /.*\.gif/m 1741 borfle\nbib.gif\nno 1742 1743 /.*\.gif/s 1744 borfle\nbib.gif\nno 1745 1746 /.*\.gif/ms 1747 borfle\nbib.gif\nno 1748 1749 /.*$/ 1750 borfle\nbib.gif\nno 1751 1752 /.*$/m 1753 borfle\nbib.gif\nno 1754 1755 /.*$/s 1756 borfle\nbib.gif\nno 1757 1758 /.*$/ms 1759 borfle\nbib.gif\nno 1760 1761 /.*$/ 1762 borfle\nbib.gif\nno\n 1763 1764 /.*$/m 1765 borfle\nbib.gif\nno\n 1766 1767 /.*$/s 1768 borfle\nbib.gif\nno\n 1769 1770 /.*$/ms 1771 borfle\nbib.gif\nno\n 1772 1773 /(.*X|^B)/ 1774 abcde\n1234Xyz 1775 BarFoo 1776 *** Failers 1777 abcde\nBar 1778 1779 /(.*X|^B)/m 1780 abcde\n1234Xyz 1781 BarFoo 1782 abcde\nBar 1783 1784 /(.*X|^B)/s 1785 abcde\n1234Xyz 1786 BarFoo 1787 *** Failers 1788 abcde\nBar 1789 1790 /(.*X|^B)/ms 1791 abcde\n1234Xyz 1792 BarFoo 1793 abcde\nBar 1794 1795 /(?s)(.*X|^B)/ 1796 abcde\n1234Xyz 1797 BarFoo 1798 *** Failers 1799 abcde\nBar 1800 1801 /(?s:.*X|^B)/ 1802 abcde\n1234Xyz 1803 BarFoo 1804 *** Failers 1805 abcde\nBar 1806 1807 /^.*B/ 1808 **** Failers 1809 abc\nB 1810 1811 /(?s)^.*B/ 1812 abc\nB 1813 1814 /(?m)^.*B/ 1815 abc\nB 1816 1817 /(?ms)^.*B/ 1818 abc\nB 1819 1820 /(?ms)^B/ 1821 abc\nB 1822 1823 /(?s)B$/ 1824 B\n 1825 1826 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ 1827 123456654321 1828 1829 /^\d\d\d\d\d\d\d\d\d\d\d\d/ 1830 123456654321 1831 1832 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/ 1833 123456654321 1834 1835 /^[abc]{12}/ 1836 abcabcabcabc 1837 1838 /^[a-c]{12}/ 1839 abcabcabcabc 1840 1841 /^(a|b|c){12}/ 1842 abcabcabcabc 1843 1844 /^[abcdefghijklmnopqrstuvwxy0123456789]/ 1845 n 1846 *** Failers 1847 z 1848 1849 /abcde{0,0}/ 1850 abcd 1851 *** Failers 1852 abce 1853 1854 /ab[cd]{0,0}e/ 1855 abe 1856 *** Failers 1857 abcde 1858 1859 /ab(c){0,0}d/ 1860 abd 1861 *** Failers 1862 abcd 1863 1864 /a(b*)/ 1865 a 1866 ab 1867 abbbb 1868 *** Failers 1869 bbbbb 1870 1871 /ab\d{0}e/ 1872 abe 1873 *** Failers 1874 ab1e 1875 1876 /"([^\\"]+|\\.)*"/ 1877 the \"quick\" brown fox 1878 \"the \\\"quick\\\" brown fox\" 1879 1880 /.*?/g+ 1881 abc 1882 1883 /\b/g+ 1884 abc 1885 1886 /\b/+g 1887 abc 1888 1889 //g 1890 abc 1891 1892 /<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 1893 <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> 1894 1895 /a[^a]b/ 1896 acb 1897 a\nb 1898 1899 /a.b/ 1900 acb 1901 *** Failers 1902 a\nb 1903 1904 /a[^a]b/s 1905 acb 1906 a\nb 1907 1908 /a.b/s 1909 acb 1910 a\nb 1911 1912 /^(b+?|a){1,2}?c/ 1913 bac 1914 bbac 1915 bbbac 1916 bbbbac 1917 bbbbbac 1918 1919 /^(b+|a){1,2}?c/ 1920 bac 1921 bbac 1922 bbbac 1923 bbbbac 1924 bbbbbac 1925 1926 /(?!\A)x/m 1927 x\nb\n 1928 a\bx\n 1929 1930 /\x0{ab}/ 1931 \0{ab} 1932 1933 /(A|B)*?CD/ 1934 CD 1935 1936 /(A|B)*CD/ 1937 CD 1938 1939 /(AB)*?\1/ 1940 ABABAB 1941 1942 /(AB)*\1/ 1943 ABABAB 1944 1945 /(?<!bar)foo/ 1946 foo 1947 catfood 1948 arfootle 1949 rfoosh 1950 *** Failers 1951 barfoo 1952 towbarfoo 1953 1954 /\w{3}(?<!bar)foo/ 1955 catfood 1956 *** Failers 1957 foo 1958 barfoo 1959 towbarfoo 1960 1961 /(?<=(foo)a)bar/ 1962 fooabar 1963 *** Failers 1964 bar 1965 foobbar 1966 1967 /\Aabc\z/m 1968 abc 1969 *** Failers 1970 abc\n 1971 qqq\nabc 1972 abc\nzzz 1973 qqq\nabc\nzzz 1974 1975 "(?>.*/)foo" 1976 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/ 1977 1978 "(?>.*/)foo" 1979 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo 1980 1981 /(?>(\.\d\d[1-9]?))\d+/ 1982 1.230003938 1983 1.875000282 1984 *** Failers 1985 1.235 1986 1987 /^((?>\w+)|(?>\s+))*$/ 1988 now is the time for all good men to come to the aid of the party 1989 *** Failers 1990 this is not a line with only words and spaces! 1991 1992 /(\d+)(\w)/ 1993 12345a 1994 12345+ 1995 1996 /((?>\d+))(\w)/ 1997 12345a 1998 *** Failers 1999 12345+ 2000 2001 /(?>a+)b/ 2002 aaab 2003 2004 /((?>a+)b)/ 2005 aaab 2006 2007 /(?>(a+))b/ 2008 aaab 2009 2010 /(?>b)+/ 2011 aaabbbccc 2012 2013 /(?>a+|b+|c+)*c/ 2014 aaabbbbccccd 2015 2016 /((?>[^()]+)|\([^()]*\))+/ 2017 ((abc(ade)ufh()()x 2018 2019 /\(((?>[^()]+)|\([^()]+\))+\)/ 2020 (abc) 2021 (abc(def)xyz) 2022 *** Failers 2023 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2024 2025 /a(?-i)b/i 2026 ab 2027 Ab 2028 *** Failers 2029 aB 2030 AB 2031 2032 /(a (?x)b c)d e/ 2033 a bcd e 2034 *** Failers 2035 a b cd e 2036 abcd e 2037 a bcde 2038 2039 /(a b(?x)c d (?-x)e f)/ 2040 a bcde f 2041 *** Failers 2042 abcdef 2043 2044 /(a(?i)b)c/ 2045 abc 2046 aBc 2047 *** Failers 2048 abC 2049 aBC 2050 Abc 2051 ABc 2052 ABC 2053 AbC 2054 2055 /a(?i:b)c/ 2056 abc 2057 aBc 2058 *** Failers 2059 ABC 2060 abC 2061 aBC 2062 2063 /a(?i:b)*c/ 2064 aBc 2065 aBBc 2066 *** Failers 2067 aBC 2068 aBBC 2069 2070 /a(?=b(?i)c)\w\wd/ 2071 abcd 2072 abCd 2073 *** Failers 2074 aBCd 2075 abcD 2076 2077 /(?s-i:more.*than).*million/i 2078 more than million 2079 more than MILLION 2080 more \n than Million 2081 *** Failers 2082 MORE THAN MILLION 2083 more \n than \n million 2084 2085 /(?:(?s-i)more.*than).*million/i 2086 more than million 2087 more than MILLION 2088 more \n than Million 2089 *** Failers 2090 MORE THAN MILLION 2091 more \n than \n million 2092 2093 /(?>a(?i)b+)+c/ 2094 abc 2095 aBbc 2096 aBBc 2097 *** Failers 2098 Abc 2099 abAb 2100 abbC 2101 2102 /(?=a(?i)b)\w\wc/ 2103 abc 2104 aBc 2105 *** Failers 2106 Ab 2107 abC 2108 aBC 2109 2110 /(?<=a(?i)b)(\w\w)c/ 2111 abxxc 2112 aBxxc 2113 *** Failers 2114 Abxxc 2115 ABxxc 2116 abxxC 2117 2118 /(?:(a)|b)(?(1)A|B)/ 2119 aA 2120 bB 2121 *** Failers 2122 aB 2123 bA 2124 2125 /^(a)?(?(1)a|b)+$/ 2126 aa 2127 b 2128 bb 2129 *** Failers 2130 ab 2131 2132 /^(?(?=abc)\w{3}:|\d\d)$/ 2133 abc: 2134 12 2135 *** Failers 2136 123 2137 xyz 2138 2139 /^(?(?!abc)\d\d|\w{3}:)$/ 2140 abc: 2141 12 2142 *** Failers 2143 123 2144 xyz 2145 2146 /(?(?<=foo)bar|cat)/ 2147 foobar 2148 cat 2149 fcat 2150 focat 2151 *** Failers 2152 foocat 2153 2154 /(?(?<!foo)cat|bar)/ 2155 foobar 2156 cat 2157 fcat 2158 focat 2159 *** Failers 2160 foocat 2161 2162 /( \( )? [^()]+ (?(1) \) |) /x 2163 abcd 2164 (abcd) 2165 the quick (abcd) fox 2166 (abcd 2167 2168 /( \( )? [^()]+ (?(1) \) ) /x 2169 abcd 2170 (abcd) 2171 the quick (abcd) fox 2172 (abcd 2173 2174 /^(?(2)a|(1)(2))+$/ 2175 12 2176 12a 2177 12aa 2178 *** Failers 2179 1234 2180 2181 /((?i)blah)\s+\1/ 2182 blah blah 2183 BLAH BLAH 2184 Blah Blah 2185 blaH blaH 2186 *** Failers 2187 blah BLAH 2188 Blah blah 2189 blaH blah 2190 2191 /((?i)blah)\s+(?i:\1)/ 2192 blah blah 2193 BLAH BLAH 2194 Blah Blah 2195 blaH blaH 2196 blah BLAH 2197 Blah blah 2198 blaH blah 2199 2200 /(?>a*)*/ 2201 a 2202 aa 2203 aaaa 2204 2205 /(abc|)+/ 2206 abc 2207 abcabc 2208 abcabcabc 2209 xyz 2210 2211 /([a]*)*/ 2212 a 2213 aaaaa 2214 2215 /([ab]*)*/ 2216 a 2217 b 2218 ababab 2219 aaaabcde 2220 bbbb 2221 2222 /([^a]*)*/ 2223 b 2224 bbbb 2225 aaa 2226 2227 /([^ab]*)*/ 2228 cccc 2229 abab 2230 2231 /([a]*?)*/ 2232 a 2233 aaaa 2234 2235 /([ab]*?)*/ 2236 a 2237 b 2238 abab 2239 baba 2240 2241 /([^a]*?)*/ 2242 b 2243 bbbb 2244 aaa 2245 2246 /([^ab]*?)*/ 2247 c 2248 cccc 2249 baba 2250 2251 /(?>a*)*/ 2252 a 2253 aaabcde 2254 2255 /((?>a*))*/ 2256 aaaaa 2257 aabbaa 2258 2259 /((?>a*?))*/ 2260 aaaaa 2261 aabbaa 2262 2263 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x 2264 12-sep-98 2265 12-09-98 2266 *** Failers 2267 sep-12-98 2268 2269 /(?<=(foo))bar\1/ 2270 foobarfoo 2271 foobarfootling 2272 *** Failers 2273 foobar 2274 barfoo 2275 2276 /(?i:saturday|sunday)/ 2277 saturday 2278 sunday 2279 Saturday 2280 Sunday 2281 SATURDAY 2282 SUNDAY 2283 SunDay 2284 2285 /(a(?i)bc|BB)x/ 2286 abcx 2287 aBCx 2288 bbx 2289 BBx 2290 *** Failers 2291 abcX 2292 aBCX 2293 bbX 2294 BBX 2295 2296 /^([ab](?i)[cd]|[ef])/ 2297 ac 2298 aC 2299 bD 2300 elephant 2301 Europe 2302 frog 2303 France 2304 *** Failers 2305 Africa 2306 2307 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/ 2308 ab 2309 aBd 2310 xy 2311 xY 2312 zebra 2313 Zambesi 2314 *** Failers 2315 aCD 2316 XY 2317 2318 /(?<=foo\n)^bar/m 2319 foo\nbar 2320 *** Failers 2321 bar 2322 baz\nbar 2323 2324 /(?<=(?<!foo)bar)baz/ 2325 barbaz 2326 barbarbaz 2327 koobarbaz 2328 *** Failers 2329 baz 2330 foobarbaz 2331 2332 /The case of aaaaaa is missed out below because I think Perl 5.005_02 gets/ 2333 /it wrong; it sets $1 to aaa rather than aa. Compare the following test,/ 2334 /where it does set $1 to aa when matching aaaaaa./ 2335 2336 /^(a\1?){4}$/ 2337 a 2338 aa 2339 aaa 2340 aaaa 2341 aaaaa 2342 aaaaaaa 2343 aaaaaaaa 2344 aaaaaaaaa 2345 aaaaaaaaaa 2346 aaaaaaaaaaa 2347 aaaaaaaaaaaa 2348 aaaaaaaaaaaaa 2349 aaaaaaaaaaaaaa 2350 aaaaaaaaaaaaaaa 2351 aaaaaaaaaaaaaaaa 2352 2353 /^(a\1?)(a\1?)(a\2?)(a\3?)$/ 2354 a 2355 aa 2356 aaa 2357 aaaa 2358 aaaaa 2359 aaaaaa 2360 aaaaaaa 2361 aaaaaaaa 2362 aaaaaaaaa 2363 aaaaaaaaaa 2364 aaaaaaaaaaa 2365 aaaaaaaaaaaa 2366 aaaaaaaaaaaaa 2367 aaaaaaaaaaaaaa 2368 aaaaaaaaaaaaaaa 2369 aaaaaaaaaaaaaaaa 2370 2371 /The following tests are taken from the Perl 5.005 test suite; some of them/ 2372 /are compatible with 5.004, but I'd rather not have to sort them out./ 2373 2374 /abc/ 2375 abc 2376 xabcy 2377 ababc 2378 *** Failers 2379 xbc 2380 axc 2381 abx 2382 2383 /ab*c/ 2384 abc 2385 2386 /ab*bc/ 2387 abc 2388 abbc 2389 abbbbc 2390 2391 /.{1}/ 2392 abbbbc 2393 2394 /.{3,4}/ 2395 abbbbc 2396 2397 /ab{0,}bc/ 2398 abbbbc 2399 2400 /ab+bc/ 2401 abbc 2402 *** Failers 2403 abc 2404 abq 2405 2406 /ab{1,}bc/ 2407 2408 /ab+bc/ 2409 abbbbc 2410 2411 /ab{1,}bc/ 2412 abbbbc 2413 2414 /ab{1,3}bc/ 2415 abbbbc 2416 2417 /ab{3,4}bc/ 2418 abbbbc 2419 2420 /ab{4,5}bc/ 2421 *** Failers 2422 abq 2423 abbbbc 2424 2425 /ab?bc/ 2426 abbc 2427 abc 2428 2429 /ab{0,1}bc/ 2430 abc 2431 2432 /ab?bc/ 2433 2434 /ab?c/ 2435 abc 2436 2437 /ab{0,1}c/ 2438 abc 2439 2440 /^abc$/ 2441 abc 2442 *** Failers 2443 abbbbc 2444 abcc 2445 2446 /^abc/ 2447 abcc 2448 2449 /^abc$/ 2450 2451 /abc$/ 2452 aabc 2453 *** Failers 2454 aabc 2455 aabcd 2456 2457 /^/ 2458 abc 2459 2460 /$/ 2461 abc 2462 2463 /a.c/ 2464 abc 2465 axc 2466 2467 /a.*c/ 2468 axyzc 2469 2470 /a[bc]d/ 2471 abd 2472 *** Failers 2473 axyzd 2474 abc 2475 2476 /a[b-d]e/ 2477 ace 2478 2479 /a[b-d]/ 2480 aac 2481 2482 /a[-b]/ 2483 a- 2484 2485 /a[b-]/ 2486 a- 2487 2488 /a]/ 2489 a] 2490 2491 /a[]]b/ 2492 a]b 2493 2494 /a[^bc]d/ 2495 aed 2496 *** Failers 2497 abd 2498 abd 2499 2500 /a[^-b]c/ 2501 adc 2502 2503 /a[^]b]c/ 2504 adc 2505 *** Failers 2506 a-c 2507 a]c 2508 2509 /\ba\b/ 2510 a- 2511 -a 2512 -a- 2513 2514 /\by\b/ 2515 *** Failers 2516 xy 2517 yz 2518 xyz 2519 2520 /\Ba\B/ 2521 *** Failers 2522 a- 2523 -a 2524 -a- 2525 2526 /\By\b/ 2527 xy 2528 2529 /\by\B/ 2530 yz 2531 2532 /\By\B/ 2533 xyz 2534 2535 /\w/ 2536 a 2537 2538 /\W/ 2539 - 2540 *** Failers 2541 - 2542 a 2543 2544 /a\sb/ 2545 a b 2546 2547 /a\Sb/ 2548 a-b 2549 *** Failers 2550 a-b 2551 a b 2552 2553 /\d/ 2554 1 2555 2556 /\D/ 2557 - 2558 *** Failers 2559 - 2560 1 2561 2562 /[\w]/ 2563 a 2564 2565 /[\W]/ 2566 - 2567 *** Failers 2568 - 2569 a 2570 2571 /a[\s]b/ 2572 a b 2573 2574 /a[\S]b/ 2575 a-b 2576 *** Failers 2577 a-b 2578 a b 2579 2580 /[\d]/ 2581 1 2582 2583 /[\D]/ 2584 - 2585 *** Failers 2586 - 2587 1 2588 2589 /ab|cd/ 2590 abc 2591 abcd 2592 2593 /()ef/ 2594 def 2595 2596 /$b/ 2597 2598 /a\(b/ 2599 a(b 2600 2601 /a\(*b/ 2602 ab 2603 a((b 2604 2605 /a\\b/ 2606 a\b 2607 2608 /((a))/ 2609 abc 2610 2611 /(a)b(c)/ 2612 abc 2613 2614 /a+b+c/ 2615 aabbabc 2616 2617 /a{1,}b{1,}c/ 2618 aabbabc 2619 2620 /a.+?c/ 2621 abcabc 2622 2623 /(a+|b)*/ 2624 ab 2625 2626 /(a+|b){0,}/ 2627 ab 2628 2629 /(a+|b)+/ 2630 ab 2631 2632 /(a+|b){1,}/ 2633 ab 2634 2635 /(a+|b)?/ 2636 ab 2637 2638 /(a+|b){0,1}/ 2639 ab 2640 2641 /[^ab]*/ 2642 cde 2643 2644 /abc/ 2645 *** Failers 2646 b 2647 2648 2649 /a*/ 2650 2651 2652 /([abc])*d/ 2653 abbbcd 2654 2655 /([abc])*bcd/ 2656 abcd 2657 2658 /a|b|c|d|e/ 2659 e 2660 2661 /(a|b|c|d|e)f/ 2662 ef 2663 2664 /abcd*efg/ 2665 abcdefg 2666 2667 /ab*/ 2668 xabyabbbz 2669 xayabbbz 2670 2671 /(ab|cd)e/ 2672 abcde 2673 2674 /[abhgefdc]ij/ 2675 hij 2676 2677 /^(ab|cd)e/ 2678 2679 /(abc|)ef/ 2680 abcdef 2681 2682 /(a|b)c*d/ 2683 abcd 2684 2685 /(ab|ab*)bc/ 2686 abc 2687 2688 /a([bc]*)c*/ 2689 abc 2690 2691 /a([bc]*)(c*d)/ 2692 abcd 2693 2694 /a([bc]+)(c*d)/ 2695 abcd 2696 2697 /a([bc]*)(c+d)/ 2698 abcd 2699 2700 /a[bcd]*dcdcde/ 2701 adcdcde 2702 2703 /a[bcd]+dcdcde/ 2704 *** Failers 2705 abcde 2706 adcdcde 2707 2708 /(ab|a)b*c/ 2709 abc 2710 2711 /((a)(b)c)(d)/ 2712 abcd 2713 2714 /[a-zA-Z_][a-zA-Z0-9_]*/ 2715 alpha 2716 2717 /^a(bc+|b[eh])g|.h$/ 2718 abh 2719 2720 /(bc+d$|ef*g.|h?i(j|k))/ 2721 effgz 2722 ij 2723 reffgz 2724 *** Failers 2725 effg 2726 bcdd 2727 2728 /((((((((((a))))))))))/ 2729 a 2730 2731 /((((((((((a))))))))))\10/ 2732 aa 2733 2734 /(((((((((a)))))))))/ 2735 a 2736 2737 /multiple words of text/ 2738 *** Failers 2739 aa 2740 uh-uh 2741 2742 /multiple words/ 2743 multiple words, yeah 2744 2745 /(.*)c(.*)/ 2746 abcde 2747 2748 /\((.*), (.*)\)/ 2749 (a, b) 2750 2751 /[k]/ 2752 2753 /abcd/ 2754 abcd 2755 2756 /a(bc)d/ 2757 abcd 2758 2759 /a[-]?c/ 2760 ac 2761 2762 /(abc)\1/ 2763 abcabc 2764 2765 /([a-c]*)\1/ 2766 abcabc 2767 2768 /(a)|\1/ 2769 a 2770 *** Failers 2771 ab 2772 x 2773 2774 /(([a-c])b*?\2)*/ 2775 ababbbcbc 2776 2777 /(([a-c])b*?\2){3}/ 2778 ababbbcbc 2779 2780 /((\3|b)\2(a)x)+/ 2781 aaaxabaxbaaxbbax 2782 2783 /((\3|b)\2(a)){2,}/ 2784 bbaababbabaaaaabbaaaabba 2785 2786 /abc/i 2787 ABC 2788 XABCY 2789 ABABC 2790 *** Failers 2791 aaxabxbaxbbx 2792 XBC 2793 AXC 2794 ABX 2795 2796 /ab*c/i 2797 ABC 2798 2799 /ab*bc/i 2800 ABC 2801 ABBC 2802 2803 /ab*?bc/i 2804 ABBBBC 2805 2806 /ab{0,}?bc/i 2807 ABBBBC 2808 2809 /ab+?bc/i 2810 ABBC 2811 2812 /ab+bc/i 2813 *** Failers 2814 ABC 2815 ABQ 2816 2817 /ab{1,}bc/i 2818 2819 /ab+bc/i 2820 ABBBBC 2821 2822 /ab{1,}?bc/i 2823 ABBBBC 2824 2825 /ab{1,3}?bc/i 2826 ABBBBC 2827 2828 /ab{3,4}?bc/i 2829 ABBBBC 2830 2831 /ab{4,5}?bc/i 2832 *** Failers 2833 ABQ 2834 ABBBBC 2835 2836 /ab??bc/i 2837 ABBC 2838 ABC 2839 2840 /ab{0,1}?bc/i 2841 ABC 2842 2843 /ab??bc/i 2844 2845 /ab??c/i 2846 ABC 2847 2848 /ab{0,1}?c/i 2849 ABC 2850 2851 /^abc$/i 2852 ABC 2853 *** Failers 2854 ABBBBC 2855 ABCC 2856 2857 /^abc/i 2858 ABCC 2859 2860 /^abc$/i 2861 2862 /abc$/i 2863 AABC 2864 2865 /^/i 2866 ABC 2867 2868 /$/i 2869 ABC 2870 2871 /a.c/i 2872 ABC 2873 AXC 2874 2875 /a.*?c/i 2876 AXYZC 2877 2878 /a.*c/i 2879 *** Failers 2880 AABC 2881 AXYZD 2882 2883 /a[bc]d/i 2884 ABD 2885 2886 /a[b-d]e/i 2887 ACE 2888 *** Failers 2889 ABC 2890 ABD 2891 2892 /a[b-d]/i 2893 AAC 2894 2895 /a[-b]/i 2896 A- 2897 2898 /a[b-]/i 2899 A- 2900 2901 /a]/i 2902 A] 2903 2904 /a[]]b/i 2905 A]B 2906 2907 /a[^bc]d/i 2908 AED 2909 2910 /a[^-b]c/i 2911 ADC 2912 *** Failers 2913 ABD 2914 A-C 2915 2916 /a[^]b]c/i 2917 ADC 2918 2919 /ab|cd/i 2920 ABC 2921 ABCD 2922 2923 /()ef/i 2924 DEF 2925 2926 /$b/i 2927 *** Failers 2928 A]C 2929 B 2930 2931 /a\(b/i 2932 A(B 2933 2934 /a\(*b/i 2935 AB 2936 A((B 2937 2938 /a\\b/i 2939 A\B 2940 2941 /((a))/i 2942 ABC 2943 2944 /(a)b(c)/i 2945 ABC 2946 2947 /a+b+c/i 2948 AABBABC 2949 2950 /a{1,}b{1,}c/i 2951 AABBABC 2952 2953 /a.+?c/i 2954 ABCABC 2955 2956 /a.*?c/i 2957 ABCABC 2958 2959 /a.{0,5}?c/i 2960 ABCABC 2961 2962 /(a+|b)*/i 2963 AB 2964 2965 /(a+|b){0,}/i 2966 AB 2967 2968 /(a+|b)+/i 2969 AB 2970 2971 /(a+|b){1,}/i 2972 AB 2973 2974 /(a+|b)?/i 2975 AB 2976 2977 /(a+|b){0,1}/i 2978 AB 2979 2980 /(a+|b){0,1}?/i 2981 AB 2982 2983 /[^ab]*/i 2984 CDE 2985 2986 /abc/i 2987 2988 /a*/i 2989 2990 2991 /([abc])*d/i 2992 ABBBCD 2993 2994 /([abc])*bcd/i 2995 ABCD 2996 2997 /a|b|c|d|e/i 2998 E 2999 3000 /(a|b|c|d|e)f/i 3001 EF 3002 3003 /abcd*efg/i 3004 ABCDEFG 3005 3006 /ab*/i 3007 XABYABBBZ 3008 XAYABBBZ 3009 3010 /(ab|cd)e/i 3011 ABCDE 3012 3013 /[abhgefdc]ij/i 3014 HIJ 3015 3016 /^(ab|cd)e/i 3017 ABCDE 3018 3019 /(abc|)ef/i 3020 ABCDEF 3021 3022 /(a|b)c*d/i 3023 ABCD 3024 3025 /(ab|ab*)bc/i 3026 ABC 3027 3028 /a([bc]*)c*/i 3029 ABC 3030 3031 /a([bc]*)(c*d)/i 3032 ABCD 3033 3034 /a([bc]+)(c*d)/i 3035 ABCD 3036 3037 /a([bc]*)(c+d)/i 3038 ABCD 3039 3040 /a[bcd]*dcdcde/i 3041 ADCDCDE 3042 3043 /a[bcd]+dcdcde/i 3044 3045 /(ab|a)b*c/i 3046 ABC 3047 3048 /((a)(b)c)(d)/i 3049 ABCD 3050 3051 /[a-zA-Z_][a-zA-Z0-9_]*/i 3052 ALPHA 3053 3054 /^a(bc+|b[eh])g|.h$/i 3055 ABH 3056 3057 /(bc+d$|ef*g.|h?i(j|k))/i 3058 EFFGZ 3059 IJ 3060 REFFGZ 3061 *** Failers 3062 ADCDCDE 3063 EFFG 3064 BCDD 3065 3066 /((((((((((a))))))))))/i 3067 A 3068 3069 /((((((((((a))))))))))\10/i 3070 AA 3071 3072 /(((((((((a)))))))))/i 3073 A 3074 3075 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i 3076 A 3077 3078 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i 3079 C 3080 3081 /multiple words of text/i 3082 *** Failers 3083 AA 3084 UH-UH 3085 3086 /multiple words/i 3087 MULTIPLE WORDS, YEAH 3088 3089 /(.*)c(.*)/i 3090 ABCDE 3091 3092 /\((.*), (.*)\)/i 3093 (A, B) 3094 3095 /[k]/i 3096 3097 /abcd/i 3098 ABCD 3099 3100 /a(bc)d/i 3101 ABCD 3102 3103 /a[-]?c/i 3104 AC 3105 3106 /(abc)\1/i 3107 ABCABC 3108 3109 /([a-c]*)\1/i 3110 ABCABC 3111 3112 /a(?!b)./ 3113 abad 3114 3115 /a(?=d)./ 3116 abad 3117 3118 /a(?=c|d)./ 3119 abad 3120 3121 /a(?:b|c|d)(.)/ 3122 ace 3123 3124 /a(?:b|c|d)*(.)/ 3125 ace 3126 3127 /a(?:b|c|d)+?(.)/ 3128 ace 3129 acdbcdbe 3130 3131 /a(?:b|c|d)+(.)/ 3132 acdbcdbe 3133 3134 /a(?:b|c|d){2}(.)/ 3135 acdbcdbe 3136 3137 /a(?:b|c|d){4,5}(.)/ 3138 acdbcdbe 3139 3140 /a(?:b|c|d){4,5}?(.)/ 3141 acdbcdbe 3142 3143 /((foo)|(bar))*/ 3144 foobar 3145 3146 /a(?:b|c|d){6,7}(.)/ 3147 acdbcdbe 3148 3149 /a(?:b|c|d){6,7}?(.)/ 3150 acdbcdbe 3151 3152 /a(?:b|c|d){5,6}(.)/ 3153 acdbcdbe 3154 3155 /a(?:b|c|d){5,6}?(.)/ 3156 acdbcdbe 3157 3158 /a(?:b|c|d){5,7}(.)/ 3159 acdbcdbe 3160 3161 /a(?:b|c|d){5,7}?(.)/ 3162 acdbcdbe 3163 3164 /a(?:b|(c|e){1,2}?|d)+?(.)/ 3165 ace 3166 3167 /^(.+)?B/ 3168 AB 3169 3170 /^([^a-z])|(\^)$/ 3171 . 3172 3173 /^[<>]&/ 3174 <&OUT 3175 3176 /^(a\1?){4}$/ 3177 aaaaaaaaaa 3178 *** Failers 3179 AB 3180 aaaaaaaaa 3181 aaaaaaaaaaa 3182 3183 /^(a(?(1)\1)){4}$/ 3184 aaaaaaaaaa 3185 *** Failers 3186 aaaaaaaaa 3187 aaaaaaaaaaa 3188 3189 /(?:(f)(o)(o)|(b)(a)(r))*/ 3190 foobar 3191 3192 /(?<=a)b/ 3193 ab 3194 *** Failers 3195 cb 3196 b 3197 3198 /(?<!c)b/ 3199 ab 3200 b 3201 b 3202 3203 /(?:..)*a/ 3204 aba 3205 3206 /(?:..)*?a/ 3207 aba 3208 3209 /^(?:b|a(?=(.)))*\1/ 3210 abc 3211 3212 /^(){3,5}/ 3213 abc 3214 3215 /^(a+)*ax/ 3216 aax 3217 3218 /^((a|b)+)*ax/ 3219 aax 3220 3221 /^((a|bc)+)*ax/ 3222 aax 3223 3224 /(a|x)*ab/ 3225 cab 3226 3227 /(a)*ab/ 3228 cab 3229 3230 /(?:(?i)a)b/ 3231 ab 3232 3233 /((?i)a)b/ 3234 ab 3235 3236 /(?:(?i)a)b/ 3237 Ab 3238 3239 /((?i)a)b/ 3240 Ab 3241 3242 /(?:(?i)a)b/ 3243 *** Failers 3244 cb 3245 aB 3246 3247 /((?i)a)b/ 3248 3249 /(?i:a)b/ 3250 ab 3251 3252 /((?i:a))b/ 3253 ab 3254 3255 /(?i:a)b/ 3256 Ab 3257 3258 /((?i:a))b/ 3259 Ab 3260 3261 /(?i:a)b/ 3262 *** Failers 3263 aB 3264 aB 3265 3266 /((?i:a))b/ 3267 3268 /(?:(?-i)a)b/i 3269 ab 3270 3271 /((?-i)a)b/i 3272 ab 3273 3274 /(?:(?-i)a)b/i 3275 aB 3276 3277 /((?-i)a)b/i 3278 aB 3279 3280 /(?:(?-i)a)b/i 3281 *** Failers 3282 aB 3283 Ab 3284 3285 /((?-i)a)b/i 3286 3287 /(?:(?-i)a)b/i 3288 aB 3289 3290 /((?-i)a)b/i 3291 aB 3292 3293 /(?:(?-i)a)b/i 3294 *** Failers 3295 Ab 3296 AB 3297 3298 /((?-i)a)b/i 3299 3300 /(?-i:a)b/i 3301 ab 3302 3303 /((?-i:a))b/i 3304 ab 3305 3306 /(?-i:a)b/i 3307 aB 3308 3309 /((?-i:a))b/i 3310 aB 3311 3312 /(?-i:a)b/i 3313 *** Failers 3314 AB 3315 Ab 3316 3317 /((?-i:a))b/i 3318 3319 /(?-i:a)b/i 3320 aB 3321 3322 /((?-i:a))b/i 3323 aB 3324 3325 /(?-i:a)b/i 3326 *** Failers 3327 Ab 3328 AB 3329 3330 /((?-i:a))b/i 3331 3332 /((?-i:a.))b/i 3333 *** Failers 3334 AB 3335 a\nB 3336 3337 /((?s-i:a.))b/i 3338 a\nB 3339 3340 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/ 3341 cabbbb 3342 3343 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/ 3344 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3345 3346 /(ab)\d\1/i 3347 Ab4ab 3348 ab4Ab 3349 3350 /foo\w*\d{4}baz/ 3351 foobar1234baz 3352 3353 /x(~~)*(?:(?:F)?)?/ 3354 x~~ 3355 3356 /^a(?#xxx){3}c/ 3357 aaac 3358 3359 /^a (?#xxx) (?#yyy) {3}c/x 3360 aaac 3361 3362 /(?<![cd])b/ 3363 *** Failers 3364 B\nB 3365 dbcb 3366 3367 /(?<![cd])[ab]/ 3368 dbaacb 3369 3370 /(?<!(c|d))b/ 3371 3372 /(?<!(c|d))[ab]/ 3373 dbaacb 3374 3375 /(?<!cd)[ab]/ 3376 cdaccb 3377 3378 /^(?:a?b?)*$/ 3379 \ 3380 a 3381 ab 3382 aaa 3383 *** Failers 3384 dbcb 3385 a-- 3386 aa-- 3387 3388 /((?s)^a(.))((?m)^b$)/ 3389 a\nb\nc\n 3390 3391 /((?m)^b$)/ 3392 a\nb\nc\n 3393 3394 /(?m)^b/ 3395 a\nb\n 3396 3397 /(?m)^(b)/ 3398 a\nb\n 3399 3400 /((?m)^b)/ 3401 a\nb\n 3402 3403 /\n((?m)^b)/ 3404 a\nb\n 3405 3406 /((?s).)c(?!.)/ 3407 a\nb\nc\n 3408 a\nb\nc\n 3409 3410 /((?s)b.)c(?!.)/ 3411 a\nb\nc\n 3412 a\nb\nc\n 3413 3414 /^b/ 3415 3416 /()^b/ 3417 *** Failers 3418 a\nb\nc\n 3419 a\nb\nc\n 3420 3421 /((?m)^b)/ 3422 a\nb\nc\n 3423 3424 /(?(1)a|b)/ 3425 3426 /(?(1)b|a)/ 3427 a 3428 3429 /(x)?(?(1)a|b)/ 3430 *** Failers 3431 a 3432 a 3433 3434 /(x)?(?(1)b|a)/ 3435 a 3436 3437 /()?(?(1)b|a)/ 3438 a 3439 3440 /()(?(1)b|a)/ 3441 3442 /()?(?(1)a|b)/ 3443 a 3444 3445 /^(\()?blah(?(1)(\)))$/ 3446 (blah) 3447 blah 3448 *** Failers 3449 a 3450 blah) 3451 (blah 3452 3453 /^(\(+)?blah(?(1)(\)))$/ 3454 (blah) 3455 blah 3456 *** Failers 3457 blah) 3458 (blah 3459 3460 /(?(?!a)a|b)/ 3461 3462 /(?(?!a)b|a)/ 3463 a 3464 3465 /(?(?=a)b|a)/ 3466 *** Failers 3467 a 3468 a 3469 3470 /(?(?=a)a|b)/ 3471 a 3472 3473 /(?=(a+?))(\1ab)/ 3474 aaab 3475 3476 /^(?=(a+?))\1ab/ 3477 3478 /(\w+:)+/ 3479 one: 3480 3481 /$(?<=^(a))/ 3482 a 3483 3484 /(?=(a+?))(\1ab)/ 3485 aaab 3486 3487 /^(?=(a+?))\1ab/ 3488 *** Failers 3489 aaab 3490 aaab 3491 3492 /([\w:]+::)?(\w+)$/ 3493 abcd 3494 xy:z:::abcd 3495 3496 /^[^bcd]*(c+)/ 3497 aexycd 3498 3499 /(a*)b+/ 3500 caab 3501 3502 /([\w:]+::)?(\w+)$/ 3503 abcd 3504 xy:z:::abcd 3505 *** Failers 3506 abcd: 3507 abcd: 3508 3509 /^[^bcd]*(c+)/ 3510 aexycd 3511 3512 /(>a+)ab/ 3513 3514 /(?>a+)b/ 3515 aaab 3516 3517 /([[:]+)/ 3518 a:[b]: 3519 3520 /([[=]+)/ 3521 a=[b]= 3522 3523 /([[.]+)/ 3524 a.[b]. 3525 3526 /((?>a+)b)/ 3527 aaab 3528 3529 /(?>(a+))b/ 3530 aaab 3531 3532 /((?>[^()]+)|\([^()]*\))+/ 3533 ((abc(ade)ufh()()x 3534 3535 /a\Z/ 3536 *** Failers 3537 aaab 3538 a\nb\n 3539 3540 /b\Z/ 3541 a\nb\n 3542 3543 /b\z/ 3544 3545 /b\Z/ 3546 a\nb 3547 3548 /b\z/ 3549 a\nb 3550 *** Failers 3551 3552 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/ 3553 a 3554 abc 3555 a-b 3556 0-9 3557 a.b 3558 5.6.7 3559 the.quick.brown.fox 3560 a100.b200.300c 3561 12-ab.1245 3562 *** Failers 3563 \ 3564 .a 3565 -a 3566 a- 3567 a. 3568 a_b 3569 a.- 3570 a.. 3571 ab..bc 3572 the.quick.brown.fox- 3573 the.quick.brown.fox. 3574 the.quick.brown.fox_ 3575 the.quick.brown.fox+ 3576 3577 /(?>.*)(?<=(abcd|wxyz))/ 3578 alphabetabcd 3579 endingwxyz 3580 *** Failers 3581 a rather long string that doesn't end with one of them 3582 3583 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/ 3584 word cat dog elephant mussel cow horse canary baboon snake shark otherword 3585 word cat dog elephant mussel cow horse canary baboon snake shark 3586 3587 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/ 3588 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 3589 3590 /(?<=\d{3}(?!999))foo/ 3591 999foo 3592 123999foo 3593 *** Failers 3594 123abcfoo 3595 3596 /(?<=(?!...999)\d{3})foo/ 3597 999foo 3598 123999foo 3599 *** Failers 3600 123abcfoo 3601 3602 /(?<=\d{3}(?!999)...)foo/ 3603 123abcfoo 3604 123456foo 3605 *** Failers 3606 123999foo 3607 3608 /(?<=\d{3}...)(?<!999)foo/ 3609 123abcfoo 3610 123456foo 3611 *** Failers 3612 123999foo 3613 3614 /<a[\s]+href[\s]*=[\s]* # find <a href= 3615 ([\"\'])? # find single or double quote 3616 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching 3617 # quote, otherwise match up to next space 3618 /isx 3619 <a href=abcd xyz 3620 <a href=\"abcd xyz pqr\" cats 3621 <a href=\'abcd xyz pqr\' cats 3622 3623 /<a\s+href\s*=\s* # find <a href= 3624 (["'])? # find single or double quote 3625 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching 3626 # quote, otherwise match up to next space 3627 /isx 3628 <a href=abcd xyz 3629 <a href=\"abcd xyz pqr\" cats 3630 <a href = \'abcd xyz pqr\' cats 3631 3632 /<a\s+href(?>\s*)=(?>\s*) # find <a href= 3633 (["'])? # find single or double quote 3634 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching 3635 # quote, otherwise match up to next space 3636 /isx 3637 <a href=abcd xyz 3638 <a href=\"abcd xyz pqr\" cats 3639 <a href = \'abcd xyz pqr\' cats 3640 3641 /((Z)+|A)*/ 3642 ZABCDEFG 3643 3644 /(Z()|A)*/ 3645 ZABCDEFG 3646 3647 /(Z(())|A)*/ 3648 ZABCDEFG 3649 3650 /((?>Z)+|A)*/ 3651 ZABCDEFG 3652 3653 /((?>)+|A)*/ 3654 ZABCDEFG 3655 3656 /a*/g 3657 abbab 3658 3659 /^[a-\d]/ 3660 abcde 3661 -things 3662 0digit 3663 *** Failers 3664 bcdef 3665 3666 /^[\d-a]/ 3667 abcde 3668 -things 3669 0digit 3670 *** Failers 3671 bcdef 3672 3673 /[[:space:]]+/ 3674 > \x09\x0a\x0c\x0d\x0b< 3675 3676 /[[:blank:]]+/ 3677 > \x09\x0a\x0c\x0d\x0b< 3678 3679 /[\s]+/ 3680 > \x09\x0a\x0c\x0d\x0b< 3681 3682 /\s+/ 3683 > \x09\x0a\x0c\x0d\x0b< 3684 3685 /ab/x 3686 ab 3687 3688 /(?!\A)x/m 3689 a\nxb\n 3690 3691 /(?!^)x/m 3692 a\nxb\n 3693 3694 /abc\Qabc\Eabc/ 3695 abcabcabc 3696 3697 /abc\Q(*+|\Eabc/ 3698 abc(*+|abc 3699 3700 / abc\Q abc\Eabc/x 3701 abc abcabc 3702 *** Failers 3703 abcabcabc 3704 3705 /abc#comment 3706 \Q#not comment 3707 literal\E/x 3708 abc#not comment\n literal 3709 3710 /abc#comment 3711 \Q#not comment 3712 literal/x 3713 abc#not comment\n literal 3714 3715 /abc#comment 3716 \Q#not comment 3717 literal\E #more comment 3718 /x 3719 abc#not comment\n literal 3720 3721 /abc#comment 3722 \Q#not comment 3723 literal\E #more comment/x 3724 abc#not comment\n literal 3725 3726 /\Qabc\$xyz\E/ 3727 abc\\\$xyz 3728 3729 /\Qabc\E\$\Qxyz\E/ 3730 abc\$xyz 3731 3732 /\Gabc/ 3733 abc 3734 *** Failers 3735 xyzabc 3736 3737 /\Gabc./g 3738 abc1abc2xyzabc3 3739 3740 /abc./g 3741 abc1abc2xyzabc3 3742 3743 /a(?x: b c )d/ 3744 XabcdY 3745 *** Failers 3746 Xa b c d Y 3747 3748 /((?x)x y z | a b c)/ 3749 XabcY 3750 AxyzB 3751 3752 /(?i)AB(?-i)C/ 3753 XabCY 3754 *** Failers 3755 XabcY 3756 3757 /((?i)AB(?-i)C|D)E/ 3758 abCE 3759 DE 3760 *** Failers 3761 abcE 3762 abCe 3763 dE 3764 De 3765 3766 /(.*)\d+\1/ 3767 abc123abc 3768 abc123bc 3769 3770 /(.*)\d+\1/s 3771 abc123abc 3772 abc123bc 3773 3774 /((.*))\d+\1/ 3775 abc123abc 3776 abc123bc 3777 3778 /-- This tests for an IPv6 address in the form where it can have up to --/ 3779 /-- eight components, one and only one of which is empty. This must be --/ 3780 /-- an internal component. --/ 3781 3782 /^(?!:) # colon disallowed at start 3783 (?: # start of item 3784 (?: [0-9a-f]{1,4} | # 1-4 hex digits or 3785 (?(1)0 | () ) ) # if null previously matched, fail; else null 3786 : # followed by colon 3787 ){1,7} # end item; 1-7 of them required 3788 [0-9a-f]{1,4} $ # final hex number at end of string 3789 (?(1)|.) # check that there was an empty component 3790 /xi 3791 a123::a123 3792 a123:b342::abcd 3793 a123:b342::324e:abcd 3794 a123:ddde:b342::324e:abcd 3795 a123:ddde:b342::324e:dcba:abcd 3796 a123:ddde:9999:b342::324e:dcba:abcd 3797 *** Failers 3798 1:2:3:4:5:6:7:8 3799 a123:bce:ddde:9999:b342::324e:dcba:abcd 3800 a123::9999:b342::324e:dcba:abcd 3801 abcde:2:3:4:5:6:7:8 3802 ::1 3803 abcd:fee0:123:: 3804 :1 3805 1: 3806 3807 /[z\Qa-d]\E]/ 3808 z 3809 a 3810 - 3811 d 3812 ] 3813 *** Failers 3814 b 3815 3816 /[\z\C]/ 3817 z 3818 C 3819 3820 /\M/ 3821 M 3822 3823 /(a+)*b/ 3824 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3825 3826 /(?i)reg(?:ul(?:[a]|ae)r|ex)/ 3827 REGular 3828 regulaer 3829 Regex 3830 regulr 3831 3832 /[--]+/ 3833 3834 3835 3836 3837 3838 /(?<=Z)X./ 3839 \x84XAZXB 3840 3841 /ab cd (?x) de fg/ 3842 ab cd defg 3843 3844 /ab cd(?x) de fg/ 3845 ab cddefg 3846 ** Failers 3847 abcddefg 3848 3849 /(?<![^f]oo)(bar)/ 3850 foobarX 3851 ** Failers 3852 boobarX 3853 3854 /(?<![^f])X/ 3855 offX 3856 ** Failers 3857 onyX 3858 3859 /(?<=[^f])X/ 3860 onyX 3861 ** Failers 3862 offX 3863 3864 /^/mg 3865 a\nb\nc\n 3866 \ 3867 3868 /(?<=C\n)^/mg 3869 A\nC\nC\n 3870 3871 /(?:(?(1)a|b)(X))+/ 3872 bXaX 3873 3874 /(?:(?(1)\1a|b)(X|Y))+/ 3875 bXXaYYaY 3876 bXYaXXaX 3877 3878 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/ 3879 bXXaYYaY 3880 3881 /[[,abc,]+]/ 3882 abc] 3883 a,b] 3884 [a,b,c] 3885 3886 /(?-x: )/x 3887 A\x20B 3888 3889 "(?x)(?-x: \s*#\s*)" 3890 A # B 3891 ** Failers 3892 # 3893 3894 "(?x-is)(?:(?-ixs) \s*#\s*) include" 3895 A #include 3896 ** Failers 3897 A#include 3898 A #Include 3899 3900 /a*b*\w/ 3901 aaabbbb 3902 aaaa 3903 a 3904 3905 /a*b?\w/ 3906 aaabbbb 3907 aaaa 3908 a 3909 3910 /a*b{0,4}\w/ 3911 aaabbbb 3912 aaaa 3913 a 3914 3915 /a*b{0,}\w/ 3916 aaabbbb 3917 aaaa 3918 a 3919 3920 /a*\d*\w/ 3921 0a 3922 a 3923 3924 /a*b *\w/x 3925 a 3926 3927 /a*b#comment 3928 *\w/x 3929 a 3930 3931 /a* b *\w/x 3932 a 3933 3934 /^\w+=.*(\\\n.*)*/ 3935 abc=xyz\\\npqr 3936 3937 /(?=(\w+))\1:/ 3938 abcd: 3939 3940 /^(?=(\w+))\1:/ 3941 abcd: 3942 3943 /^\Eabc/ 3944 abc 3945 3946 /^[\Eabc]/ 3947 a 3948 ** Failers 3949 E 3950 3951 /^[a-\Ec]/ 3952 b 3953 ** Failers 3954 - 3955 E 3956 3957 /^[a\E\E-\Ec]/ 3958 b 3959 ** Failers 3960 - 3961 E 3962 3963 /^[\E\Qa\E-\Qz\E]+/ 3964 b 3965 ** Failers 3966 - 3967 3968 /^[a\Q]bc\E]/ 3969 a 3970 ] 3971 c 3972 3973 /^[a-\Q\E]/ 3974 a 3975 - 3976 3977 /^(a()*)*/ 3978 aaaa 3979 3980 /^(?:a(?:(?:))*)*/ 3981 aaaa 3982 3983 /^(a()+)+/ 3984 aaaa 3985 3986 /^(?:a(?:(?:))+)+/ 3987 aaaa 3988 3989 /(a){0,3}(?(1)b|(c|))*D/ 3990 abbD 3991 ccccD 3992 D 3993 3994 /(a|)*\d/ 3995 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3996 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 3997 3998 /(?>a|)*\d/ 3999 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 4001 4002 /(?:a|)*\d/ 4003 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 4004 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 4005 4006 /\Z/g 4007 abc\n 4008 4009 /^(?s)(?>.*)(?<!\n)/ 4010 abc 4011 abc\n 4012 4013 /^(?![^\n]*\n\z)/ 4014 abc 4015 abc\n 4016 4017 /\z(?<!\n)/ 4018 abc 4019 abc\n 4020 4021 / End of testinput1 /