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