Home | History | Annotate | Download | only in testdata
      1 # This set of tests is for UTF support, including Unicode properties. The 
      2 # Unicode tests are all compatible with all versions of Perl >= 5.10, but
      3 # some of the property tests may differ because of different versions of
      4 # Unicode in use by PCRE2 and Perl.
      5 
      6 #newline_default lf anycrlf any
      7 #perltest
      8 
      9 /a.b/utf
     10     acb
     11     a\x7fb
     12     a\x{100}b
     13 \= Expect no match
     14     a\nb
     15 
     16 /a(.{3})b/utf
     17     a\x{4000}xyb
     18     a\x{4000}\x7fyb
     19     a\x{4000}\x{100}yb
     20 \= Expect no match
     21     a\x{4000}b
     22     ac\ncb
     23 
     24 /a(.*?)(.)/
     25     a\xc0\x88b
     26 
     27 /a(.*?)(.)/utf
     28     a\x{100}b
     29 
     30 /a(.*)(.)/
     31     a\xc0\x88b
     32 
     33 /a(.*)(.)/utf
     34     a\x{100}b
     35 
     36 /a(.)(.)/
     37     a\xc0\x92bcd
     38 
     39 /a(.)(.)/utf
     40     a\x{240}bcd
     41 
     42 /a(.?)(.)/
     43     a\xc0\x92bcd
     44 
     45 /a(.?)(.)/utf
     46     a\x{240}bcd
     47 
     48 /a(.??)(.)/
     49     a\xc0\x92bcd
     50 
     51 /a(.??)(.)/utf
     52     a\x{240}bcd
     53 
     54 /a(.{3})b/utf
     55     a\x{1234}xyb
     56     a\x{1234}\x{4321}yb
     57     a\x{1234}\x{4321}\x{3412}b
     58 \= Expect no match
     59     a\x{1234}b
     60     ac\ncb
     61 
     62 /a(.{3,})b/utf
     63     a\x{1234}xyb
     64     a\x{1234}\x{4321}yb
     65     a\x{1234}\x{4321}\x{3412}b
     66     axxxxbcdefghijb
     67     a\x{1234}\x{4321}\x{3412}\x{3421}b
     68 \= Expect no match
     69     a\x{1234}b
     70 
     71 /a(.{3,}?)b/utf
     72     a\x{1234}xyb
     73     a\x{1234}\x{4321}yb
     74     a\x{1234}\x{4321}\x{3412}b
     75     axxxxbcdefghijb
     76     a\x{1234}\x{4321}\x{3412}\x{3421}b
     77 \= Expect no match
     78     a\x{1234}b
     79 
     80 /a(.{3,5})b/utf
     81     a\x{1234}xyb
     82     a\x{1234}\x{4321}yb
     83     a\x{1234}\x{4321}\x{3412}b
     84     axxxxbcdefghijb
     85     a\x{1234}\x{4321}\x{3412}\x{3421}b
     86     axbxxbcdefghijb
     87     axxxxxbcdefghijb
     88 \= Expect no match
     89     a\x{1234}b
     90     axxxxxxbcdefghijb
     91 
     92 /a(.{3,5}?)b/utf
     93     a\x{1234}xyb
     94     a\x{1234}\x{4321}yb
     95     a\x{1234}\x{4321}\x{3412}b
     96     axxxxbcdefghijb
     97     a\x{1234}\x{4321}\x{3412}\x{3421}b
     98     axbxxbcdefghijb
     99     axxxxxbcdefghijb
    100 \= Expect no match
    101     a\x{1234}b
    102     axxxxxxbcdefghijb
    103 
    104 /^[a\x{c0}]/utf
    105 \= Expect no match
    106     \x{100}
    107 
    108 /(?<=aXb)cd/utf
    109     aXbcd
    110 
    111 /(?<=a\x{100}b)cd/utf
    112     a\x{100}bcd
    113 
    114 /(?<=a\x{100000}b)cd/utf
    115     a\x{100000}bcd
    116 
    117 /(?:\x{100}){3}b/utf
    118     \x{100}\x{100}\x{100}b
    119 \= Expect no match
    120     \x{100}\x{100}b
    121 
    122 /\x{ab}/utf
    123     \x{ab}
    124     \xc2\xab
    125 \= Expect no match
    126     \x00{ab}
    127 
    128 /(?<=(.))X/utf
    129     WXYZ
    130     \x{256}XYZ
    131 \= Expect no match
    132     XYZ
    133 
    134 /[^a]+/g,utf
    135     bcd
    136     \x{100}aY\x{256}Z
    137 
    138 /^[^a]{2}/utf
    139     \x{100}bc
    140 
    141 /^[^a]{2,}/utf
    142     \x{100}bcAa
    143 
    144 /^[^a]{2,}?/utf
    145     \x{100}bca
    146 
    147 /[^a]+/gi,utf
    148     bcd
    149     \x{100}aY\x{256}Z
    150 
    151 /^[^a]{2}/i,utf
    152     \x{100}bc
    153 
    154 /^[^a]{2,}/i,utf
    155     \x{100}bcAa
    156 
    157 /^[^a]{2,}?/i,utf
    158     \x{100}bca
    159 
    160 /\x{100}{0,0}/utf
    161     abcd
    162 
    163 /\x{100}?/utf
    164     abcd
    165     \x{100}\x{100}
    166 
    167 /\x{100}{0,3}/utf
    168     \x{100}\x{100}
    169     \x{100}\x{100}\x{100}\x{100}
    170 
    171 /\x{100}*/utf
    172     abce
    173     \x{100}\x{100}\x{100}\x{100}
    174 
    175 /\x{100}{1,1}/utf
    176     abcd\x{100}\x{100}\x{100}\x{100}
    177 
    178 /\x{100}{1,3}/utf
    179     abcd\x{100}\x{100}\x{100}\x{100}
    180 
    181 /\x{100}+/utf
    182     abcd\x{100}\x{100}\x{100}\x{100}
    183 
    184 /\x{100}{3}/utf
    185     abcd\x{100}\x{100}\x{100}XX
    186 
    187 /\x{100}{3,5}/utf
    188     abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
    189 
    190 /\x{100}{3,}/utf
    191     abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
    192 
    193 /(?<=a\x{100}{2}b)X/utf,aftertext
    194     Xyyya\x{100}\x{100}bXzzz
    195 
    196 /\D*/utf
    197   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    198 
    199 /\D*/utf
    200   \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
    201 
    202 /\D/utf
    203     1X2
    204     1\x{100}2
    205 
    206 />\S/utf
    207     > >X Y
    208     > >\x{100} Y
    209 
    210 /\d/utf
    211     \x{100}3
    212 
    213 /\s/utf
    214     \x{100} X
    215 
    216 /\D+/utf
    217     12abcd34
    218 \= Expect no match
    219     1234
    220 
    221 /\D{2,3}/utf
    222     12abcd34
    223     12ab34
    224 \= Expect no match
    225     1234
    226     12a34
    227 
    228 /\D{2,3}?/utf
    229     12abcd34
    230     12ab34
    231 \= Expect no match
    232     1234
    233     12a34
    234 
    235 /\d+/utf
    236     12abcd34
    237 
    238 /\d{2,3}/utf
    239     12abcd34
    240     1234abcd
    241 \= Expect no match
    242     1.4
    243 
    244 /\d{2,3}?/utf
    245     12abcd34
    246     1234abcd
    247 \= Expect no match
    248     1.4
    249 
    250 /\S+/utf
    251     12abcd34
    252 \= Expect no match
    253     \    \
    254 
    255 /\S{2,3}/utf
    256     12abcd34
    257     1234abcd
    258 \= Expect no match
    259     \     \
    260 
    261 /\S{2,3}?/utf
    262     12abcd34
    263     1234abcd
    264 \= Expect no match
    265     \     \
    266 
    267 />\s+</utf,aftertext
    268     12>      <34
    269 
    270 />\s{2,3}</utf,aftertext
    271     ab>  <cd
    272     ab>   <ce
    273 \= Expect no match
    274     ab>    <cd
    275 
    276 />\s{2,3}?</utf,aftertext
    277     ab>  <cd
    278     ab>   <ce
    279 \= Expect no match
    280     ab>    <cd
    281 
    282 /\w+/utf
    283     12      34
    284 \= Expect no match
    285     +++=*!
    286 
    287 /\w{2,3}/utf
    288     ab  cd
    289     abcd ce
    290 \= Expect no match
    291     a.b.c
    292 
    293 /\w{2,3}?/utf
    294     ab  cd
    295     abcd ce
    296 \= Expect no match
    297     a.b.c
    298 
    299 /\W+/utf
    300     12====34
    301 \= Expect no match
    302     abcd
    303 
    304 /\W{2,3}/utf
    305     ab====cd
    306     ab==cd
    307 \= Expect no match
    308     a.b.c
    309 
    310 /\W{2,3}?/utf
    311     ab====cd
    312     ab==cd
    313 \= Expect no match
    314     a.b.c
    315 
    316 /[\x{100}]/utf
    317     \x{100}
    318     Z\x{100}
    319     \x{100}Z
    320 
    321 /[Z\x{100}]/utf
    322     Z\x{100}
    323     \x{100}
    324     \x{100}Z
    325 
    326 /[\x{100}\x{200}]/utf
    327     ab\x{100}cd
    328     ab\x{200}cd
    329 
    330 /[\x{100}-\x{200}]/utf
    331     ab\x{100}cd
    332     ab\x{200}cd
    333     ab\x{111}cd
    334 
    335 /[z-\x{200}]/utf
    336     ab\x{100}cd
    337     ab\x{200}cd
    338     ab\x{111}cd
    339     abzcd
    340     ab|cd
    341 
    342 /[Q\x{100}\x{200}]/utf
    343     ab\x{100}cd
    344     ab\x{200}cd
    345     Q?
    346 
    347 /[Q\x{100}-\x{200}]/utf
    348     ab\x{100}cd
    349     ab\x{200}cd
    350     ab\x{111}cd
    351     Q?
    352 
    353 /[Qz-\x{200}]/utf
    354     ab\x{100}cd
    355     ab\x{200}cd
    356     ab\x{111}cd
    357     abzcd
    358     ab|cd
    359     Q?
    360 
    361 /[\x{100}\x{200}]{1,3}/utf
    362     ab\x{100}cd
    363     ab\x{200}cd
    364     ab\x{200}\x{100}\x{200}\x{100}cd
    365 
    366 /[\x{100}\x{200}]{1,3}?/utf
    367     ab\x{100}cd
    368     ab\x{200}cd
    369     ab\x{200}\x{100}\x{200}\x{100}cd
    370 
    371 /[Q\x{100}\x{200}]{1,3}/utf
    372     ab\x{100}cd
    373     ab\x{200}cd
    374     ab\x{200}\x{100}\x{200}\x{100}cd
    375 
    376 /[Q\x{100}\x{200}]{1,3}?/utf
    377     ab\x{100}cd
    378     ab\x{200}cd
    379     ab\x{200}\x{100}\x{200}\x{100}cd
    380 
    381 /(?<=[\x{100}\x{200}])X/utf
    382     abc\x{200}X
    383     abc\x{100}X
    384 \= Expect no match
    385     X
    386 
    387 /(?<=[Q\x{100}\x{200}])X/utf
    388     abc\x{200}X
    389     abc\x{100}X
    390     abQX
    391 \= Expect no match
    392     X
    393 
    394 /(?<=[\x{100}\x{200}]{3})X/utf
    395     abc\x{100}\x{200}\x{100}X
    396 \= Expect no match
    397     abc\x{200}X
    398     X
    399 
    400 /[^\x{100}\x{200}]X/utf
    401     AX
    402     \x{150}X
    403     \x{500}X
    404 \= Expect no match
    405     \x{100}X
    406     \x{200}X
    407 
    408 /[^Q\x{100}\x{200}]X/utf
    409     AX
    410     \x{150}X
    411     \x{500}X
    412 \= Expect no match
    413     \x{100}X
    414     \x{200}X
    415     QX
    416 
    417 /[^\x{100}-\x{200}]X/utf
    418     AX
    419     \x{500}X
    420 \= Expect no match
    421     \x{100}X
    422     \x{150}X
    423     \x{200}X
    424 
    425 /[z-\x{100}]/i,utf
    426     z
    427     Z
    428     \x{100}
    429 \= Expect no match
    430     \x{102}
    431     y
    432 
    433 /[\xFF]/
    434     >\xff<
    435 
    436 /[\xff]/utf
    437     >\x{ff}<
    438 
    439 /[^\xFF]/
    440     XYZ
    441 
    442 /[^\xff]/utf
    443     XYZ
    444     \x{123}
    445 
    446 /^[ac]*b/utf
    447 \= Expect no match
    448   xb
    449 
    450 /^[ac\x{100}]*b/utf
    451 \= Expect no match
    452   xb
    453 
    454 /^[^x]*b/i,utf
    455 \= Expect no match
    456   xb
    457 
    458 /^[^x]*b/utf
    459 \= Expect no match
    460   xb
    461 
    462 /^\d*b/utf
    463 \= Expect no match
    464   xb
    465 
    466 /(|a)/g,utf
    467     catac
    468     a\x{256}a
    469 
    470 /^\x{85}$/i,utf
    471     \x{85}
    472 
    473 /^/utf
    474     
    475 
    476 /^\/utf
    477     
    478 
    479 "(?s)(.{1,5})"utf
    480     abcdefg
    481     ab
    482 
    483 /a*\x{100}*\w/utf
    484     a
    485 
    486 /\S\S/g,utf
    487     A\x{a3}BC
    488 
    489 /\S{2}/g,utf
    490     A\x{a3}BC
    491 
    492 /\W\W/g,utf
    493     +\x{a3}==
    494 
    495 /\W{2}/g,utf
    496     +\x{a3}==
    497 
    498 /\S/g,utf
    499     \x{442}\x{435}\x{441}\x{442}
    500 
    501 /[\S]/g,utf
    502     \x{442}\x{435}\x{441}\x{442}
    503 
    504 /\D/g,utf
    505     \x{442}\x{435}\x{441}\x{442}
    506 
    507 /[\D]/g,utf
    508     \x{442}\x{435}\x{441}\x{442}
    509 
    510 /\W/g,utf
    511     \x{2442}\x{2435}\x{2441}\x{2442}
    512 
    513 /[\W]/g,utf
    514     \x{2442}\x{2435}\x{2441}\x{2442}
    515 
    516 /[\S\s]*/utf
    517     abc\n\r\x{442}\x{435}\x{441}\x{442}xyz
    518 
    519 /[\x{41f}\S]/g,utf
    520     \x{442}\x{435}\x{441}\x{442}
    521 
    522 /.[^\S]./g,utf
    523     abc def\x{442}\x{443}xyz\npqr
    524 
    525 /.[^\S\n]./g,utf
    526     abc def\x{442}\x{443}xyz\npqr
    527 
    528 /[[:^alnum:]]/g,utf
    529     +\x{2442}
    530 
    531 /[[:^alpha:]]/g,utf
    532     +\x{2442}
    533 
    534 /[[:^ascii:]]/g,utf
    535     A\x{442}
    536 
    537 /[[:^blank:]]/g,utf
    538     A\x{442}
    539 
    540 /[[:^cntrl:]]/g,utf
    541     A\x{442}
    542 
    543 /[[:^digit:]]/g,utf
    544     A\x{442}
    545 
    546 /[[:^graph:]]/g,utf
    547     \x19\x{e01ff}
    548 
    549 /[[:^lower:]]/g,utf
    550     A\x{422}
    551 
    552 /[[:^print:]]/g,utf
    553     \x{19}\x{e01ff}
    554 
    555 /[[:^punct:]]/g,utf
    556     A\x{442}
    557 
    558 /[[:^space:]]/g,utf
    559     A\x{442}
    560 
    561 /[[:^upper:]]/g,utf
    562     a\x{442}
    563 
    564 /[[:^word:]]/g,utf
    565     +\x{2442}
    566 
    567 /[[:^xdigit:]]/g,utf
    568     M\x{442}
    569 
    570 /[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\d_^]/utf
    571 
    572 /^[^d]*?$/
    573     abc
    574 
    575 /^[^d]*?$/utf
    576     abc
    577 
    578 /^[^d]*?$/i
    579     abc
    580 
    581 /^[^d]*?$/i,utf
    582     abc
    583 
    584 /(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]/utf
    585 
    586 /^[a\x{c0}]b/utf
    587     \x{c0}b
    588 
    589 /^([a\x{c0}]*?)aa/utf
    590     a\x{c0}aaaa/
    591 
    592 /^([a\x{c0}]*?)aa/utf
    593     a\x{c0}aaaa/
    594     a\x{c0}a\x{c0}aaa/
    595 
    596 /^([a\x{c0}]*)aa/utf
    597     a\x{c0}aaaa/
    598     a\x{c0}a\x{c0}aaa/
    599 
    600 /^([a\x{c0}]*)a\x{c0}/utf
    601     a\x{c0}aaaa/
    602     a\x{c0}a\x{c0}aaa/
    603 
    604 /A*/g,utf
    605     AAB\x{123}BAA
    606 
    607 /(abc)\1/i,utf
    608 \= Expect no match
    609    abc
    610 
    611 /(abc)\1/utf
    612 \= Expect no match
    613    abc
    614 
    615 /a(*:a\x{1234}b)/utf,mark
    616     abc
    617 
    618 /a(*:ab)/utf,mark
    619     abc
    620 
    621 # Noncharacters
    622 
    623 /./utf
    624     \x{fffe}
    625     \x{ffff}
    626     \x{1fffe}
    627     \x{1ffff}
    628     \x{2fffe}
    629     \x{2ffff}
    630     \x{3fffe}
    631     \x{3ffff}
    632     \x{4fffe}
    633     \x{4ffff}
    634     \x{5fffe}
    635     \x{5ffff}
    636     \x{6fffe}
    637     \x{6ffff}
    638     \x{7fffe}
    639     \x{7ffff}
    640     \x{8fffe}
    641     \x{8ffff}
    642     \x{9fffe}
    643     \x{9ffff}
    644     \x{afffe}
    645     \x{affff}
    646     \x{bfffe}
    647     \x{bffff}
    648     \x{cfffe}
    649     \x{cffff}
    650     \x{dfffe}
    651     \x{dffff}
    652     \x{efffe}
    653     \x{effff}
    654     \x{ffffe}
    655     \x{fffff}
    656     \x{10fffe}
    657     \x{10ffff}
    658     \x{fdd0}
    659     \x{fdd1}
    660     \x{fdd2}
    661     \x{fdd3}
    662     \x{fdd4}
    663     \x{fdd5}
    664     \x{fdd6}
    665     \x{fdd7}
    666     \x{fdd8}
    667     \x{fdd9}
    668     \x{fdda}
    669     \x{fddb}
    670     \x{fddc}
    671     \x{fddd}
    672     \x{fdde}
    673     \x{fddf}
    674     \x{fde0}
    675     \x{fde1}
    676     \x{fde2}
    677     \x{fde3}
    678     \x{fde4}
    679     \x{fde5}
    680     \x{fde6}
    681     \x{fde7}
    682     \x{fde8}
    683     \x{fde9}
    684     \x{fdea}
    685     \x{fdeb}
    686     \x{fdec}
    687     \x{fded}
    688     \x{fdee}
    689     \x{fdef}
    690 
    691 /^\d*\w{4}/utf
    692     1234
    693 \= Expect no match     
    694     123
    695 
    696 /^[^b]*\w{4}/utf
    697     aaaa
    698 \= Expect no match     
    699     aaa
    700 
    701 /^[^b]*\w{4}/i,utf
    702     aaaa
    703 \= Expect no match     
    704     aaa
    705 
    706 /^\x{100}*.{4}/utf
    707     \x{100}\x{100}\x{100}\x{100}
    708 \= Expect no match     
    709     \x{100}\x{100}\x{100}
    710 
    711 /^\x{100}*.{4}/i,utf
    712     \x{100}\x{100}\x{100}\x{100}
    713 \= Expect no match     
    714     \x{100}\x{100}\x{100}
    715 
    716 /^a+[a\x{200}]/utf
    717     aa
    718 
    719 /^.\B.\B./utf
    720     \x{10123}\x{10124}\x{10125}
    721 
    722 /^#[^\x{ffff}]#[^\x{ffff}]#[^\x{ffff}]#/utf
    723     #\x{10000}#\x{100}#\x{10ffff}#
    724     
    725 # Unicode property support tests 
    726 
    727 /^\pC\pL\pM\pN\pP\pS\pZ</utf
    728     \x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
    729     \np\x{300}9!\$ < 
    730 \= Expect no match     
    731     ap\x{300}9!\$ < 
    732   
    733 /^\PC/utf
    734     X
    735 \= Expect no match     
    736     \x7f
    737   
    738 /^\PL/utf
    739     9
    740 \= Expect no match     
    741     \x{c0}
    742   
    743 /^\PM/utf
    744     X
    745 \= Expect no match     
    746     \x{30f}
    747   
    748 /^\PN/utf
    749     X
    750 \= Expect no match     
    751     \x{660}
    752   
    753 /^\PP/utf
    754     X
    755 \= Expect no match 
    756     \x{66c}
    757   
    758 /^\PS/utf
    759     X
    760 \= Expect no match 
    761     \x{f01}
    762   
    763 /^\PZ/utf
    764     X
    765 \= Expect no match 
    766     \x{1680}
    767     
    768 /^\p{Cc}/utf
    769     \x{017}
    770     \x{09f} 
    771 \= Expect no match
    772     \x{0600} 
    773   
    774 /^\p{Cf}/utf
    775     \x{601}
    776 \= Expect no match
    777     \x{09f} 
    778   
    779 /^\p{Cn}/utf
    780     \x{e0000}
    781 \= Expect no match
    782     \x{09f} 
    783   
    784 /^\p{Co}/utf
    785     \x{f8ff}
    786 \= Expect no match
    787     \x{09f} 
    788   
    789 /^\p{Ll}/utf
    790     a
    791 \= Expect no match 
    792     Z
    793     \x{e000}  
    794   
    795 /^\p{Lm}/utf
    796     \x{2b0}
    797 \= Expect no match
    798     a 
    799   
    800 /^\p{Lo}/utf
    801     \x{1bb}
    802     \x{3400}
    803     \x{3401}
    804     \x{4d00}
    805     \x{4db4}
    806     \x{4db5}     
    807 \= Expect no match
    808     a 
    809     \x{2b0}
    810     \x{4db6} 
    811   
    812 /^\p{Lt}/utf
    813     \x{1c5}
    814 \= Expect no match
    815     a 
    816     \x{2b0}
    817   
    818 /^\p{Lu}/utf
    819     A
    820 \= Expect no match
    821     \x{2b0}
    822   
    823 /^\p{Mc}/utf
    824     \x{903}
    825 \= Expect no match
    826     X
    827     \x{300}
    828        
    829 /^\p{Me}/utf
    830     \x{488}
    831 \= Expect no match
    832     X
    833     \x{903}
    834     \x{300}
    835   
    836 /^\p{Mn}/utf
    837     \x{300}
    838 \= Expect no match
    839     X
    840     \x{903}
    841   
    842 /^\p{Nd}+/utf
    843     0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
    844     \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
    845     \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
    846 \= Expect no match
    847     X
    848   
    849 /^\p{Nl}/utf
    850     \x{16ee}
    851 \= Expect no match
    852     X
    853     \x{966}
    854   
    855 /^\p{No}/utf
    856     \x{b2}
    857     \x{b3}
    858 \= Expect no match
    859     X
    860     \x{16ee}
    861   
    862 /^\p{Pc}/utf
    863     \x5f
    864     \x{203f}
    865 \= Expect no match
    866     X
    867     -
    868     \x{58a}
    869   
    870 /^\p{Pd}/utf
    871     -
    872     \x{58a}
    873 \= Expect no match
    874     X
    875     \x{203f}
    876   
    877 /^\p{Pe}/utf
    878     )
    879     ]
    880     }
    881     \x{f3b}
    882 \= Expect no match
    883     X
    884     \x{203f}
    885     (
    886     [
    887     {
    888     \x{f3c}
    889   
    890 /^\p{Pf}/utf
    891     \x{bb}
    892     \x{2019}
    893 \= Expect no match
    894     X
    895     \x{203f}
    896   
    897 /^\p{Pi}/utf
    898     \x{ab}
    899     \x{2018}
    900 \= Expect no match
    901     X
    902     \x{203f}
    903   
    904 /^\p{Po}/utf
    905     !
    906     \x{37e}
    907 \= Expect no match
    908     X
    909     \x{203f}
    910   
    911 /^\p{Ps}/utf
    912     (
    913     [
    914     {
    915     \x{f3c}
    916 \= Expect no match
    917     X
    918     )
    919     ]
    920     }
    921     \x{f3b}
    922   
    923 /^\p{Sk}/utf
    924     \x{2c2}
    925 \= Expect no match
    926     X
    927     \x{9f2}
    928   
    929 /^\p{Sm}+/utf
    930     +<|~\x{ac}\x{2044}
    931 \= Expect no match
    932     X
    933     \x{9f2}
    934   
    935 /^\p{So}/utf
    936     \x{a6}
    937     \x{482} 
    938 \= Expect no match
    939     X
    940     \x{9f2}
    941   
    942 /^\p{Zl}/utf
    943     \x{2028}
    944 \= Expect no match
    945     X
    946     \x{2029}
    947   
    948 /^\p{Zp}/utf
    949     \x{2029}
    950 \= Expect no match
    951     X
    952     \x{2028}
    953   
    954 /\p{Nd}+(..)/utf
    955     \x{660}\x{661}\x{662}ABC
    956   
    957 /\p{Nd}+?(..)/utf
    958     \x{660}\x{661}\x{662}ABC
    959   
    960 /\p{Nd}{2,}(..)/utf
    961     \x{660}\x{661}\x{662}ABC
    962   
    963 /\p{Nd}{2,}?(..)/utf
    964     \x{660}\x{661}\x{662}ABC
    965   
    966 /\p{Nd}*(..)/utf
    967     \x{660}\x{661}\x{662}ABC
    968   
    969 /\p{Nd}*?(..)/utf
    970     \x{660}\x{661}\x{662}ABC
    971   
    972 /\p{Nd}{2}(..)/utf
    973     \x{660}\x{661}\x{662}ABC
    974   
    975 /\p{Nd}{2,3}(..)/utf
    976     \x{660}\x{661}\x{662}ABC
    977   
    978 /\p{Nd}{2,3}?(..)/utf
    979     \x{660}\x{661}\x{662}ABC
    980   
    981 /\p{Nd}?(..)/utf
    982     \x{660}\x{661}\x{662}ABC
    983   
    984 /\p{Nd}??(..)/utf
    985     \x{660}\x{661}\x{662}ABC
    986   
    987 /\p{Nd}*+(..)/utf
    988     \x{660}\x{661}\x{662}ABC
    989   
    990 /\p{Nd}*+(...)/utf
    991     \x{660}\x{661}\x{662}ABC
    992   
    993 /\p{Nd}*+(....)/utf
    994 \= Expect no match
    995     \x{660}\x{661}\x{662}ABC
    996   
    997 /(?<=A\p{Nd})XYZ/utf
    998     A2XYZ
    999     123A5XYZPQR
   1000     ABA\x{660}XYZpqr
   1001 \= Expect no match
   1002     AXYZ
   1003     XYZ     
   1004     
   1005 /(?<!\pL)XYZ/utf
   1006     1XYZ
   1007     AB=XYZ.. 
   1008     XYZ 
   1009 \= Expect no match
   1010     WXYZ 
   1011 
   1012 /[\P{Nd}]+/utf
   1013     abcd
   1014 \= Expect no match
   1015     1234
   1016 
   1017 /\D+/utf
   1018     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1019 \= Expect no match
   1020     11111111111111111111111111111111111111111111111111111111111111111111111
   1021      
   1022 /\P{Nd}+/utf
   1023     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1024 \= Expect no match
   1025     11111111111111111111111111111111111111111111111111111111111111111111111
   1026 
   1027 /[\D]+/utf
   1028     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1029 \= Expect no match
   1030     11111111111111111111111111111111111111111111111111111111111111111111111
   1031 
   1032 /[\P{Nd}]+/utf
   1033     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1034 \= Expect no match
   1035     11111111111111111111111111111111111111111111111111111111111111111111111
   1036 
   1037 /[\D\P{Nd}]+/utf
   1038     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
   1039 \= Expect no match
   1040     11111111111111111111111111111111111111111111111111111111111111111111111
   1041 
   1042 /\pL/utf
   1043     a
   1044     A 
   1045 
   1046 /\pL/i,utf
   1047     a
   1048     A 
   1049     
   1050 /\p{Lu}/utf
   1051     A
   1052     aZ
   1053 \= Expect no match
   1054     abc   
   1055 
   1056 /\p{Ll}/utf
   1057     a
   1058     Az
   1059 \= Expect no match
   1060     ABC   
   1061 
   1062 /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
   1063     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
   1064 \= Expect no match
   1065     a\x{391}\x{10427}\x{ff3a}\x{1fb0}   
   1066     A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
   1067     A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
   1068     A\x{391}\x{10427}\x{ff5a}\x{1fb0}
   1069     A\x{391}\x{10427}\x{ff3a}\x{1fb8}
   1070 
   1071 /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
   1072     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
   1073     a\x{391}\x{10427}\x{ff3a}\x{1fb0}   
   1074     A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
   1075     A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
   1076     A\x{391}\x{10427}\x{ff5a}\x{1fb0}
   1077     A\x{391}\x{10427}\x{ff3a}\x{1fb8}
   1078 
   1079 /\x{391}+/i,utf
   1080     \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
   1081 
   1082 /\x{391}{3,5}(.)/i,utf
   1083     \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
   1084 
   1085 /\x{391}{3,5}?(.)/i,utf
   1086     \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
   1087 
   1088 /[\x{391}\x{ff3a}]/i,utf
   1089     \x{391}
   1090     \x{ff3a}
   1091     \x{3b1}
   1092     \x{ff5a}   
   1093     
   1094 /^(\X*)C/utf
   1095     A\x{300}\x{301}\x{302}BCA\x{300}\x{301} 
   1096     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C 
   1097 
   1098 /^(\X*?)C/utf
   1099     A\x{300}\x{301}\x{302}BCA\x{300}\x{301} 
   1100     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C 
   1101 
   1102 /^(\X*)(.)/utf
   1103     A\x{300}\x{301}\x{302}BCA\x{300}\x{301} 
   1104     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C 
   1105 
   1106 /^(\X*?)(.)/utf
   1107     A\x{300}\x{301}\x{302}BCA\x{300}\x{301} 
   1108     A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C 
   1109 
   1110 /^\X(.)/utf
   1111 \= Expect no match
   1112     A\x{300}\x{301}\x{302}
   1113 
   1114 /^\X{2,3}(.)/utf
   1115     A\x{300}\x{301}B\x{300}X
   1116     A\x{300}\x{301}B\x{300}C\x{300}\x{301}
   1117     A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
   1118     A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
   1119     
   1120 /^\X{2,3}?(.)/utf
   1121     A\x{300}\x{301}B\x{300}X
   1122     A\x{300}\x{301}B\x{300}C\x{300}\x{301}
   1123     A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
   1124     A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
   1125 
   1126 /^\X/utf
   1127     A
   1128     A\x{300}BC 
   1129     A\x{300}\x{301}\x{302}BC 
   1130     \x{300}  
   1131 
   1132 /^\p{Han}+/utf
   1133     \x{2e81}\x{3007}\x{2f804}\x{31a0}
   1134 \= Expect no match
   1135     \x{2e7f}  
   1136 
   1137 /^\P{Katakana}+/utf
   1138     \x{3105}
   1139 \= Expect no match
   1140     \x{30ff}  
   1141 
   1142 /^[\p{Arabic}]/utf
   1143     \x{06e9}
   1144     \x{060b}
   1145 \= Expect no match
   1146     X\x{06e9}   
   1147 
   1148 /^[\P{Yi}]/utf
   1149     \x{2f800}
   1150 \= Expect no match
   1151     \x{a014}
   1152     \x{a4c6}   
   1153     
   1154 /^\p{Any}X/utf
   1155     AXYZ
   1156     \x{1234}XYZ 
   1157 \= Expect no match
   1158     X  
   1159     
   1160 /^\P{Any}X/utf
   1161 \= Expect no match
   1162     AX
   1163     
   1164 /^\p{Any}?X/utf
   1165     XYZ
   1166     AXYZ
   1167     \x{1234}XYZ 
   1168 \= Expect no match
   1169     ABXYZ   
   1170 
   1171 /^\P{Any}?X/utf
   1172     XYZ
   1173 \= Expect no match
   1174     AXYZ
   1175     \x{1234}XYZ 
   1176     ABXYZ   
   1177 
   1178 /^\p{Any}+X/utf
   1179     AXYZ
   1180     \x{1234}XYZ
   1181     A\x{1234}XYZ
   1182 \= Expect no match
   1183     XYZ
   1184 
   1185 /^\P{Any}+X/utf
   1186 \= Expect no match
   1187     AXYZ
   1188     \x{1234}XYZ
   1189     A\x{1234}XYZ
   1190     XYZ
   1191 
   1192 /^\p{Any}*X/utf
   1193     XYZ
   1194     AXYZ
   1195     \x{1234}XYZ
   1196     A\x{1234}XYZ
   1197 
   1198 /^\P{Any}*X/utf
   1199     XYZ
   1200 \= Expect no match
   1201     AXYZ
   1202     \x{1234}XYZ
   1203     A\x{1234}XYZ
   1204 
   1205 /^[\p{Any}]X/utf
   1206     AXYZ
   1207     \x{1234}XYZ 
   1208 \= Expect no match
   1209     X  
   1210     
   1211 /^[\P{Any}]X/utf
   1212 \= Expect no match
   1213     AX
   1214     
   1215 /^[\p{Any}]?X/utf
   1216     XYZ
   1217     AXYZ
   1218     \x{1234}XYZ 
   1219 \= Expect no match
   1220     ABXYZ   
   1221 
   1222 /^[\P{Any}]?X/utf
   1223     XYZ
   1224 \= Expect no match
   1225     AXYZ
   1226     \x{1234}XYZ 
   1227     ABXYZ   
   1228 
   1229 /^[\p{Any}]+X/utf
   1230     AXYZ
   1231     \x{1234}XYZ
   1232     A\x{1234}XYZ
   1233 \= Expect no match
   1234     XYZ
   1235 
   1236 /^[\P{Any}]+X/utf
   1237 \= Expect no match
   1238     AXYZ
   1239     \x{1234}XYZ
   1240     A\x{1234}XYZ
   1241     XYZ
   1242 
   1243 /^[\p{Any}]*X/utf
   1244     XYZ
   1245     AXYZ
   1246     \x{1234}XYZ
   1247     A\x{1234}XYZ
   1248 
   1249 /^[\P{Any}]*X/utf
   1250     XYZ
   1251 \= Expect no match
   1252     AXYZ
   1253     \x{1234}XYZ
   1254     A\x{1234}XYZ
   1255 
   1256 /^\p{Any}{3,5}?/utf
   1257     abcdefgh
   1258     \x{1234}\n\r\x{3456}xyz 
   1259 
   1260 /^\p{Any}{3,5}/utf
   1261     abcdefgh
   1262     \x{1234}\n\r\x{3456}xyz 
   1263 
   1264 /^\P{Any}{3,5}?/utf
   1265 \= Expect no match
   1266     abcdefgh
   1267     \x{1234}\n\r\x{3456}xyz 
   1268 
   1269 /^\p{L&}X/utf
   1270      AXY
   1271      aXY
   1272      \x{1c5}XY
   1273 \= Expect no match
   1274     \x{1bb}XY
   1275     \x{2b0}XY
   1276     !XY      
   1277 
   1278 /^[\p{L&}]X/utf
   1279     AXY
   1280     aXY
   1281      \x{1c5}XY
   1282 \= Expect no match
   1283     \x{1bb}XY
   1284     \x{2b0}XY
   1285     !XY      
   1286 
   1287 /^\p{L&}+X/utf
   1288     AXY
   1289     aXY
   1290     AbcdeXyz 
   1291     \x{1c5}AbXY
   1292     abcDEXypqreXlmn 
   1293 \= Expect no match
   1294     \x{1bb}XY
   1295     \x{2b0}XY
   1296     !XY      
   1297 
   1298 /^[\p{L&}]+X/utf
   1299     AXY
   1300     aXY
   1301     AbcdeXyz 
   1302     \x{1c5}AbXY
   1303     abcDEXypqreXlmn 
   1304 \= Expect no match
   1305     \x{1bb}XY
   1306     \x{2b0}XY
   1307     !XY      
   1308 
   1309 /^\p{L&}+?X/utf
   1310     AXY
   1311     aXY
   1312     AbcdeXyz 
   1313     \x{1c5}AbXY
   1314     abcDEXypqreXlmn 
   1315 \= Expect no match
   1316     \x{1bb}XY
   1317     \x{2b0}XY
   1318     !XY      
   1319 
   1320 /^[\p{L&}]+?X/utf
   1321     AXY
   1322     aXY
   1323     AbcdeXyz 
   1324     \x{1c5}AbXY
   1325     abcDEXypqreXlmn 
   1326 \= Expect no match
   1327     \x{1bb}XY
   1328     \x{2b0}XY
   1329     !XY      
   1330 
   1331 /^\P{L&}X/utf
   1332     !XY
   1333     \x{1bb}XY
   1334     \x{2b0}XY
   1335 \= Expect no match
   1336     \x{1c5}XY
   1337     AXY      
   1338 
   1339 /^[\P{L&}]X/utf
   1340     !XY
   1341     \x{1bb}XY
   1342     \x{2b0}XY
   1343 \= Expect no match
   1344     \x{1c5}XY
   1345     AXY      
   1346 
   1347 /^(\p{Z}[^\p{C}\p{Z}]+)*$/
   1348     \xa0!
   1349 
   1350 /^[\pL](abc)(?1)/
   1351     AabcabcYZ    
   1352 
   1353 /([\pL]=(abc))*X/
   1354     L=abcX
   1355 
   1356 /^\p{Balinese}\p{Cuneiform}\p{Nko}\p{Phags_Pa}\p{Phoenician}/utf
   1357     \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}
   1358 
   1359 # Check property support in non-UTF mode
   1360  
   1361 /\p{L}{4}/
   1362     123abcdefg
   1363     123abc\xc4\xc5zz
   1364 
   1365 /\X{1,3}\d/
   1366 \= Expect no match
   1367     \x8aBCD
   1368   
   1369 /\X?\d/
   1370 \= Expect no match
   1371     \x8aBCD 
   1372 
   1373 /\P{L}?\d/
   1374 \= Expect no match
   1375     \x8aBCD 
   1376 
   1377 /[\PPP\x8a]{1,}\x80/
   1378     A\x80
   1379 
   1380 /^[\p{Arabic}]/utf
   1381     \x{604}
   1382     \x{60e} 
   1383     \x{656} 
   1384     \x{657} 
   1385     \x{658} 
   1386     \x{659} 
   1387     \x{65a} 
   1388     \x{65b} 
   1389     \x{65c} 
   1390     \x{65d} 
   1391     \x{65e} 
   1392     \x{65f}
   1393     \x{66a} 
   1394     \x{6e9} 
   1395     \x{6ef}
   1396     \x{6fa}  
   1397 
   1398 /^\p{Cyrillic}/utf
   1399     \x{1d2b} 
   1400     
   1401 /^\p{Common}/utf
   1402     \x{2116}
   1403     \x{1D183}  
   1404 
   1405 /^\p{Inherited}/utf
   1406     \x{200c} 
   1407 \= Expect no match
   1408     \x{64a}
   1409     \x{656}     
   1410 
   1411 /^\p{Shavian}/utf
   1412     \x{10450}
   1413     \x{1047f}
   1414     
   1415 /^\p{Deseret}/utf
   1416     \x{10400}
   1417     \x{1044f}
   1418     
   1419 /^\p{Osmanya}/utf
   1420     \x{10480}
   1421     \x{1049d}
   1422     \x{104a0}
   1423     \x{104a9}
   1424 \= Expect no match
   1425     \x{1049e}
   1426     \x{1049f}
   1427     \x{104aa}           
   1428 
   1429 /\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/utf
   1430     \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
   1431 
   1432 /\x{a77d}\x{1d79}/i,utf
   1433     \x{a77d}\x{1d79}
   1434     \x{1d79}\x{a77d} 
   1435 
   1436 /\x{a77d}\x{1d79}/utf
   1437     \x{a77d}\x{1d79}
   1438 \= Expect no match 
   1439     \x{1d79}\x{a77d} 
   1440 
   1441 /(A)\1/i,utf
   1442     AA
   1443     Aa
   1444     aa
   1445     aA
   1446 
   1447 /(\x{10a})\1/i,utf
   1448     \x{10a}\x{10a}
   1449     \x{10a}\x{10b}
   1450     \x{10b}\x{10b}
   1451     \x{10b}\x{10a}
   1452     
   1453 # The next two tests are for property support in non-UTF mode
   1454 
   1455 /(?:\p{Lu}|\x20)+/
   1456     \x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
   1457 
   1458 /[\p{Lu}\x20]+/
   1459     \x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
   1460 
   1461 /\p{Avestan}\p{Bamum}\p{Egyptian_Hieroglyphs}\p{Imperial_Aramaic}\p{Inscriptional_Pahlavi}\p{Inscriptional_Parthian}\p{Javanese}\p{Kaithi}\p{Lisu}\p{Meetei_Mayek}\p{Old_South_Arabian}\p{Old_Turkic}\p{Samaritan}\p{Tai_Tham}\p{Tai_Viet}/utf
   1462     \x{10b00}\x{a6ef}\x{13007}\x{10857}\x{10b78}\x{10b58}\x{a980}\x{110c1}\x{a4ff}\x{abc0}\x{10a7d}\x{10c48}\x{0800}\x{1aad}\x{aac0}
   1463 
   1464 /^\w+/utf,ucp
   1465     Az_\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
   1466 
   1467 /^[[:xdigit:]]*/utf,ucp
   1468     1a\x{660}\x{bef}\x{16ee}
   1469   
   1470 /^\d+/utf,ucp
   1471     1\x{660}\x{bef}\x{16ee}
   1472   
   1473 /^[[:digit:]]+/utf,ucp
   1474     1\x{660}\x{bef}\x{16ee}
   1475 
   1476 /^>\s+/utf,ucp
   1477     >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b} 
   1478   
   1479 /^>\pZ+/utf,ucp
   1480     >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b} 
   1481   
   1482 /^>[[:space:]]*/utf,ucp
   1483     >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b} 
   1484 
   1485 /^>[[:blank:]]*/utf,ucp
   1486     >\x{20}\x{a0}\x{1680}\x{2000}\x{202f}\x{9}\x{b}\x{2028} 
   1487 
   1488 /^[[:alpha:]]*/utf,ucp
   1489     Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}
   1490 
   1491 /^[[:alnum:]]*/utf,ucp
   1492     Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
   1493 
   1494 /^[[:cntrl:]]*/utf,ucp
   1495     \x{0}\x{09}\x{1f}\x{7f}\x{9f} 
   1496 
   1497 /^[[:graph:]]*/utf,ucp
   1498     A\x{a1}\x{a0}
   1499 
   1500 /^[[:print:]]*/utf,ucp
   1501     A z\x{a0}\x{a1}
   1502 
   1503 /^[[:punct:]]*/utf,ucp
   1504     .+\x{a1}\x{a0}
   1505 
   1506 /\p{Zs}*?\R/
   1507 \= Expect no match
   1508     a\xFCb   
   1509 
   1510 /\p{Zs}*\R/
   1511 \= Expect no match 
   1512     a\xFCb   
   1513 
   1514 //i,utf
   1515     
   1516     x 
   1517      
   1518 
   1519 /[]/i,utf
   1520     
   1521     x 
   1522      
   1523 
   1524 //i,utf
   1525     
   1526     
   1527     
   1528 # These are tests for extended grapheme clusters  
   1529 
   1530 /^\X/utf,aftertext
   1531     G\x{34e}\x{34e}X
   1532     \x{34e}\x{34e}X
   1533     \x04X
   1534     \x{1100}X
   1535     \x{1100}\x{34e}X
   1536     \x{1b04}\x{1b04}X 
   1537     *These match up to the roman letters
   1538     \x{1111}\x{1111}L,L
   1539     \x{1111}\x{1111}\x{1169}L,L,V
   1540     \x{1111}\x{ae4c}L, LV
   1541     \x{1111}\x{ad89}L, LVT
   1542     \x{1111}\x{ae4c}\x{1169}L, LV, V
   1543     \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
   1544     \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
   1545     \x{1111}\x{ad89}\x{11fe}L, LVT, T
   1546     \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
   1547     \x{ad89}\x{11fe}\x{11fe}LVT, T, T
   1548     *These match just the first codepoint (invalid sequence)
   1549     \x{1111}\x{11fe}L, T
   1550     \x{ae4c}\x{1111}LV, L
   1551     \x{ae4c}\x{ae4c}LV, LV
   1552     \x{ae4c}\x{ad89}LV, LVT
   1553     \x{1169}\x{1111}V, L
   1554     \x{1169}\x{ae4c}V, LV
   1555     \x{1169}\x{ad89}V, LVT
   1556     \x{ad89}\x{1111}LVT, L
   1557     \x{ad89}\x{1169}LVT, V
   1558     \x{ad89}\x{ae4c}LVT, LV
   1559     \x{ad89}\x{ad89}LVT, LVT
   1560     \x{11fe}\x{1111}T, L
   1561     \x{11fe}\x{1169}T, V
   1562     \x{11fe}\x{ae4c}T, LV
   1563     \x{11fe}\x{ad89}T, LVT
   1564     *Test extend and spacing mark
   1565     \x{1111}\x{ae4c}\x{0711}L, LV, extend
   1566     \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
   1567     \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
   1568     *Test CR, LF, and control
   1569     \x0d\x{0711}CR, extend
   1570     \x0d\x{1b04}CR, spacingmark
   1571     \x0a\x{0711}LF, extend
   1572     \x0a\x{1b04}LF, spacingmark
   1573     \x0b\x{0711}Control, extend
   1574     \x09\x{1b04}Control, spacingmark
   1575     *There are no Prepend characters, so we can't test Prepend, CR
   1576     
   1577 /^(?>\X{2})X/utf,aftertext
   1578     \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1579     
   1580 /^\X{2,4}X/utf,aftertext
   1581     \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1582     \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1583     \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1584 
   1585 /^\X{2,4}?X/utf,aftertext
   1586     \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1587     \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1588     \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
   1589 
   1590 /\X*Z/utf,no_start_optimize
   1591 \= Expect no match
   1592     A\x{300}
   1593 
   1594 /\X*(.)/utf,no_start_optimize
   1595     A\x{1111}\x{ae4c}\x{1169}
   1596 
   1597 # --------------------------------------------
   1598 
   1599 /\x{1e9e}+/i,utf
   1600     \x{1e9e}\x{00df}
   1601 
   1602 /[z\x{1e9e}]+/i,utf
   1603     \x{1e9e}\x{00df}
   1604 
   1605 /\x{00df}+/i,utf
   1606     \x{1e9e}\x{00df}
   1607 
   1608 /[z\x{00df}]+/i,utf
   1609     \x{1e9e}\x{00df}
   1610 
   1611 /\x{1f88}+/i,utf
   1612     \x{1f88}\x{1f80} 
   1613 
   1614 /[z\x{1f88}]+/i,utf
   1615     \x{1f88}\x{1f80} 
   1616     
   1617 # Check a reference with more than one other case
   1618 
   1619 /^(\x{00b5})\1{2}$/i,utf        
   1620     \x{00b5}\x{039c}\x{03bc} 
   1621     
   1622 # Characters with more than one other case; test in classes 
   1623 
   1624 /[z\x{00b5}]+/i,utf
   1625     \x{00b5}\x{039c}\x{03bc}
   1626 
   1627 /[z\x{039c}]+/i,utf
   1628     \x{00b5}\x{039c}\x{03bc}
   1629 
   1630 /[z\x{03bc}]+/i,utf
   1631     \x{00b5}\x{039c}\x{03bc}
   1632 
   1633 /[z\x{00c5}]+/i,utf
   1634     \x{00c5}\x{00e5}\x{212b}
   1635 
   1636 /[z\x{00e5}]+/i,utf
   1637     \x{00c5}\x{00e5}\x{212b}
   1638 
   1639 /[z\x{212b}]+/i,utf
   1640     \x{00c5}\x{00e5}\x{212b}
   1641 
   1642 /[z\x{01c4}]+/i,utf
   1643     \x{01c4}\x{01c5}\x{01c6}
   1644 
   1645 /[z\x{01c5}]+/i,utf
   1646     \x{01c4}\x{01c5}\x{01c6}
   1647 
   1648 /[z\x{01c6}]+/i,utf
   1649     \x{01c4}\x{01c5}\x{01c6}
   1650 
   1651 /[z\x{01c7}]+/i,utf
   1652     \x{01c7}\x{01c8}\x{01c9}
   1653 
   1654 /[z\x{01c8}]+/i,utf
   1655     \x{01c7}\x{01c8}\x{01c9}
   1656 
   1657 /[z\x{01c9}]+/i,utf
   1658     \x{01c7}\x{01c8}\x{01c9}
   1659 
   1660 /[z\x{01ca}]+/i,utf
   1661     \x{01ca}\x{01cb}\x{01cc}
   1662 
   1663 /[z\x{01cb}]+/i,utf
   1664     \x{01ca}\x{01cb}\x{01cc}
   1665 
   1666 /[z\x{01cc}]+/i,utf
   1667     \x{01ca}\x{01cb}\x{01cc}
   1668 
   1669 /[z\x{01f1}]+/i,utf
   1670     \x{01f1}\x{01f2}\x{01f3}
   1671 
   1672 /[z\x{01f2}]+/i,utf
   1673     \x{01f1}\x{01f2}\x{01f3}
   1674 
   1675 /[z\x{01f3}]+/i,utf
   1676     \x{01f1}\x{01f2}\x{01f3}
   1677 
   1678 /[z\x{0345}]+/i,utf
   1679     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1680 
   1681 /[z\x{0399}]+/i,utf
   1682     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1683 
   1684 /[z\x{03b9}]+/i,utf
   1685     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1686 
   1687 /[z\x{1fbe}]+/i,utf
   1688     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1689 
   1690 /[z\x{0392}]+/i,utf
   1691     \x{0392}\x{03b2}\x{03d0}
   1692 
   1693 /[z\x{03b2}]+/i,utf
   1694     \x{0392}\x{03b2}\x{03d0}
   1695 
   1696 /[z\x{03d0}]+/i,utf
   1697     \x{0392}\x{03b2}\x{03d0}
   1698 
   1699 /[z\x{0395}]+/i,utf
   1700     \x{0395}\x{03b5}\x{03f5}
   1701 
   1702 /[z\x{03b5}]+/i,utf
   1703     \x{0395}\x{03b5}\x{03f5}
   1704 
   1705 /[z\x{03f5}]+/i,utf
   1706     \x{0395}\x{03b5}\x{03f5}
   1707 
   1708 /[z\x{0398}]+/i,utf
   1709     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1710 
   1711 /[z\x{03b8}]+/i,utf
   1712     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1713 
   1714 /[z\x{03d1}]+/i,utf
   1715     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1716 
   1717 /[z\x{03f4}]+/i,utf
   1718     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1719 
   1720 /[z\x{039a}]+/i,utf
   1721     \x{039a}\x{03ba}\x{03f0}
   1722 
   1723 /[z\x{03ba}]+/i,utf
   1724     \x{039a}\x{03ba}\x{03f0}
   1725 
   1726 /[z\x{03f0}]+/i,utf
   1727     \x{039a}\x{03ba}\x{03f0}
   1728 
   1729 /[z\x{03a0}]+/i,utf
   1730     \x{03a0}\x{03c0}\x{03d6} 
   1731 
   1732 /[z\x{03c0}]+/i,utf
   1733     \x{03a0}\x{03c0}\x{03d6} 
   1734 
   1735 /[z\x{03d6}]+/i,utf
   1736     \x{03a0}\x{03c0}\x{03d6} 
   1737 
   1738 /[z\x{03a1}]+/i,utf
   1739     \x{03a1}\x{03c1}\x{03f1}
   1740 
   1741 /[z\x{03c1}]+/i,utf
   1742     \x{03a1}\x{03c1}\x{03f1}
   1743 
   1744 /[z\x{03f1}]+/i,utf
   1745     \x{03a1}\x{03c1}\x{03f1}
   1746 
   1747 /[z\x{03a3}]+/i,utf
   1748     \x{03A3}\x{03C2}\x{03C3}
   1749 
   1750 /[z\x{03c2}]+/i,utf
   1751     \x{03A3}\x{03C2}\x{03C3}
   1752 
   1753 /[z\x{03c3}]+/i,utf
   1754     \x{03A3}\x{03C2}\x{03C3}
   1755 
   1756 /[z\x{03a6}]+/i,utf
   1757     \x{03a6}\x{03c6}\x{03d5} 
   1758 
   1759 /[z\x{03c6}]+/i,utf
   1760     \x{03a6}\x{03c6}\x{03d5} 
   1761 
   1762 /[z\x{03d5}]+/i,utf
   1763     \x{03a6}\x{03c6}\x{03d5} 
   1764 
   1765 /[z\x{03c9}]+/i,utf
   1766     \x{03c9}\x{03a9}\x{2126}
   1767 
   1768 /[z\x{03a9}]+/i,utf
   1769     \x{03c9}\x{03a9}\x{2126}
   1770 
   1771 /[z\x{2126}]+/i,utf
   1772     \x{03c9}\x{03a9}\x{2126}
   1773 
   1774 /[z\x{1e60}]+/i,utf
   1775     \x{1e60}\x{1e61}\x{1e9b}
   1776 
   1777 /[z\x{1e61}]+/i,utf
   1778     \x{1e60}\x{1e61}\x{1e9b}
   1779 
   1780 /[z\x{1e9b}]+/i,utf
   1781     \x{1e60}\x{1e61}\x{1e9b}
   1782 
   1783 # Perl 5.12.4 gets these wrong, but 5.15.3 is OK 
   1784 
   1785 /[z\x{004b}]+/i,utf
   1786     \x{004b}\x{006b}\x{212a}
   1787 
   1788 /[z\x{006b}]+/i,utf
   1789     \x{004b}\x{006b}\x{212a}
   1790 
   1791 /[z\x{212a}]+/i,utf
   1792     \x{004b}\x{006b}\x{212a}
   1793 
   1794 /[z\x{0053}]+/i,utf
   1795     \x{0053}\x{0073}\x{017f}
   1796 
   1797 /[z\x{0073}]+/i,utf
   1798     \x{0053}\x{0073}\x{017f}
   1799 
   1800 /[z\x{017f}]+/i,utf
   1801     \x{0053}\x{0073}\x{017f}
   1802     
   1803 # --------------------------------------  
   1804 
   1805 /() \1/i,utf
   1806      
   1807      
   1808      
   1809      
   1810        
   1811 
   1812 /() \1/i,utf
   1813      
   1814      
   1815      
   1816      
   1817        
   1818 
   1819 /() \1*/i,utf
   1820     \x20
   1821      
   1822 
   1823 # Perl matches these 
   1824 
   1825 /\x{00b5}+/i,utf
   1826     \x{00b5}\x{039c}\x{03bc}
   1827 
   1828 /\x{039c}+/i,utf
   1829     \x{00b5}\x{039c}\x{03bc}
   1830 
   1831 /\x{03bc}+/i,utf
   1832     \x{00b5}\x{039c}\x{03bc}
   1833 
   1834 
   1835 /\x{00c5}+/i,utf
   1836     \x{00c5}\x{00e5}\x{212b}
   1837 
   1838 /\x{00e5}+/i,utf
   1839     \x{00c5}\x{00e5}\x{212b}
   1840 
   1841 /\x{212b}+/i,utf
   1842     \x{00c5}\x{00e5}\x{212b}
   1843 
   1844 
   1845 /\x{01c4}+/i,utf
   1846     \x{01c4}\x{01c5}\x{01c6}
   1847 
   1848 /\x{01c5}+/i,utf
   1849     \x{01c4}\x{01c5}\x{01c6}
   1850 
   1851 /\x{01c6}+/i,utf
   1852     \x{01c4}\x{01c5}\x{01c6}
   1853 
   1854 
   1855 /\x{01c7}+/i,utf
   1856     \x{01c7}\x{01c8}\x{01c9}
   1857 
   1858 /\x{01c8}+/i,utf
   1859     \x{01c7}\x{01c8}\x{01c9}
   1860 
   1861 /\x{01c9}+/i,utf
   1862     \x{01c7}\x{01c8}\x{01c9}
   1863 
   1864 
   1865 /\x{01ca}+/i,utf
   1866     \x{01ca}\x{01cb}\x{01cc}
   1867 
   1868 /\x{01cb}+/i,utf
   1869     \x{01ca}\x{01cb}\x{01cc}
   1870 
   1871 /\x{01cc}+/i,utf
   1872     \x{01ca}\x{01cb}\x{01cc}
   1873 
   1874 
   1875 /\x{01f1}+/i,utf
   1876     \x{01f1}\x{01f2}\x{01f3}
   1877 
   1878 /\x{01f2}+/i,utf
   1879     \x{01f1}\x{01f2}\x{01f3}
   1880 
   1881 /\x{01f3}+/i,utf
   1882     \x{01f1}\x{01f2}\x{01f3}
   1883 
   1884 
   1885 /\x{0345}+/i,utf
   1886     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1887 
   1888 /\x{0399}+/i,utf
   1889     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1890 
   1891 /\x{03b9}+/i,utf
   1892     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1893 
   1894 /\x{1fbe}+/i,utf
   1895     \x{0345}\x{0399}\x{03b9}\x{1fbe}
   1896 
   1897 
   1898 /\x{0392}+/i,utf
   1899     \x{0392}\x{03b2}\x{03d0}
   1900 
   1901 /\x{03b2}+/i,utf
   1902     \x{0392}\x{03b2}\x{03d0}
   1903 
   1904 /\x{03d0}+/i,utf
   1905     \x{0392}\x{03b2}\x{03d0}
   1906     
   1907 
   1908 /\x{0395}+/i,utf
   1909     \x{0395}\x{03b5}\x{03f5}
   1910 
   1911 /\x{03b5}+/i,utf
   1912     \x{0395}\x{03b5}\x{03f5}
   1913 
   1914 /\x{03f5}+/i,utf
   1915     \x{0395}\x{03b5}\x{03f5}
   1916 
   1917 
   1918 /\x{0398}+/i,utf
   1919     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1920 
   1921 /\x{03b8}+/i,utf
   1922     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1923 
   1924 /\x{03d1}+/i,utf
   1925     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1926 
   1927 /\x{03f4}+/i,utf
   1928     \x{0398}\x{03b8}\x{03d1}\x{03f4}
   1929     
   1930 
   1931 /\x{039a}+/i,utf
   1932     \x{039a}\x{03ba}\x{03f0}
   1933 
   1934 /\x{03ba}+/i,utf
   1935     \x{039a}\x{03ba}\x{03f0}
   1936 
   1937 /\x{03f0}+/i,utf
   1938     \x{039a}\x{03ba}\x{03f0}
   1939     
   1940 
   1941 /\x{03a0}+/i,utf
   1942     \x{03a0}\x{03c0}\x{03d6} 
   1943 
   1944 /\x{03c0}+/i,utf
   1945     \x{03a0}\x{03c0}\x{03d6} 
   1946 
   1947 /\x{03d6}+/i,utf
   1948     \x{03a0}\x{03c0}\x{03d6} 
   1949 
   1950 
   1951 /\x{03a1}+/i,utf
   1952     \x{03a1}\x{03c1}\x{03f1}
   1953 
   1954 /\x{03c1}+/i,utf
   1955     \x{03a1}\x{03c1}\x{03f1}
   1956 
   1957 /\x{03f1}+/i,utf
   1958     \x{03a1}\x{03c1}\x{03f1}
   1959 
   1960 
   1961 /\x{03a3}+/i,utf
   1962     \x{03A3}\x{03C2}\x{03C3}
   1963 
   1964 /\x{03c2}+/i,utf
   1965     \x{03A3}\x{03C2}\x{03C3}
   1966 
   1967 /\x{03c3}+/i,utf
   1968     \x{03A3}\x{03C2}\x{03C3}
   1969     
   1970 
   1971 /\x{03a6}+/i,utf
   1972     \x{03a6}\x{03c6}\x{03d5} 
   1973 
   1974 /\x{03c6}+/i,utf
   1975     \x{03a6}\x{03c6}\x{03d5} 
   1976 
   1977 /\x{03d5}+/i,utf
   1978     \x{03a6}\x{03c6}\x{03d5} 
   1979 
   1980 
   1981 /\x{03c9}+/i,utf
   1982     \x{03c9}\x{03a9}\x{2126}
   1983 
   1984 /\x{03a9}+/i,utf
   1985     \x{03c9}\x{03a9}\x{2126}
   1986 
   1987 /\x{2126}+/i,utf
   1988     \x{03c9}\x{03a9}\x{2126}
   1989     
   1990 
   1991 /\x{1e60}+/i,utf
   1992     \x{1e60}\x{1e61}\x{1e9b}
   1993 
   1994 /\x{1e61}+/i,utf
   1995     \x{1e60}\x{1e61}\x{1e9b}
   1996 
   1997 /\x{1e9b}+/i,utf
   1998     \x{1e60}\x{1e61}\x{1e9b}
   1999     
   2000 
   2001 /\x{1e9e}+/i,utf
   2002     \x{1e9e}\x{00df}
   2003 
   2004 /\x{00df}+/i,utf
   2005     \x{1e9e}\x{00df}
   2006     
   2007 
   2008 /\x{1f88}+/i,utf
   2009     \x{1f88}\x{1f80} 
   2010 
   2011 /\x{1f80}+/i,utf
   2012     \x{1f88}\x{1f80} 
   2013 
   2014 # Perl 5.12.4 gets these wrong, but 5.15.3 is OK 
   2015 
   2016 /\x{004b}+/i,utf
   2017     \x{004b}\x{006b}\x{212a}
   2018 
   2019 /\x{006b}+/i,utf
   2020     \x{004b}\x{006b}\x{212a}
   2021 
   2022 /\x{212a}+/i,utf
   2023     \x{004b}\x{006b}\x{212a}
   2024 
   2025 
   2026 /\x{0053}+/i,utf
   2027     \x{0053}\x{0073}\x{017f}
   2028 
   2029 /\x{0073}+/i,utf
   2030     \x{0053}\x{0073}\x{017f}
   2031 
   2032 /\x{017f}+/i,utf
   2033     \x{0053}\x{0073}\x{017f}
   2034 
   2035 /^\p{Any}*\d{4}/utf
   2036     1234
   2037 \= Expect no match
   2038     123 
   2039 
   2040 /^\X*\w{4}/utf
   2041     1234
   2042 \= Expect no match
   2043     123  
   2044 
   2045 /^A\s+Z/utf,ucp
   2046     A\x{2005}Z
   2047     A\x{85}\x{2005}Z
   2048 
   2049 /^A[\s]+Z/utf,ucp
   2050     A\x{2005}Z
   2051     A\x{85}\x{2005}Z
   2052 
   2053 /^[[:graph:]]+$/utf,ucp
   2054     Letter:ABC
   2055     Mark:\x{300}\x{1d172}\x{1d17b}
   2056     Number:9\x{660}
   2057     Punctuation:\x{66a},;
   2058     Symbol:\x{6de}<>\x{fffc}
   2059     Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
   2060     \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
   2061     \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
   2062     \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
   2063     \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
   2064     \x{feff}
   2065     \x{fff9}\x{fffa}\x{fffb}
   2066     \x{110bd}
   2067     \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
   2068     \x{e0001}
   2069     \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
   2070 \= Expect no match
   2071     \x{09}
   2072     \x{0a}
   2073     \x{1D}
   2074     \x{20}
   2075     \x{85}
   2076     \x{a0}
   2077     \x{1680}
   2078     \x{2028}
   2079     \x{2029}
   2080     \x{202f}
   2081     \x{2065}
   2082     \x{3000}
   2083     \x{e0002}
   2084     \x{e001f}
   2085     \x{e0080} 
   2086 
   2087 /^[[:print:]]+$/utf,ucp
   2088     Space: \x{a0}
   2089     \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
   2090     \x{2006}\x{2007}\x{2008}\x{2009}\x{200a} 
   2091     \x{202f}\x{205f} 
   2092     \x{3000}
   2093     Letter:ABC
   2094     Mark:\x{300}\x{1d172}\x{1d17b}
   2095     Number:9\x{660}
   2096     Punctuation:\x{66a},;
   2097     Symbol:\x{6de}<>\x{fffc}
   2098     Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
   2099     \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
   2100     \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
   2101     \x{202f}
   2102     \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
   2103     \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
   2104     \x{feff}
   2105     \x{fff9}\x{fffa}\x{fffb}
   2106     \x{110bd}
   2107     \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
   2108     \x{e0001}
   2109     \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
   2110 \= Expect no match
   2111     \x{09}
   2112     \x{1D}
   2113     \x{85}
   2114     \x{2028}
   2115     \x{2029}
   2116     \x{2065}
   2117     \x{e0002}
   2118     \x{e001f}
   2119     \x{e0080} 
   2120 
   2121 /^[[:punct:]]+$/utf,ucp
   2122     \$+<=>^`|~
   2123     !\"#%&'()*,-./:;?@[\\]_{}
   2124     \x{a1}\x{a7}  
   2125     \x{37e} 
   2126 \= Expect no match
   2127     abcde  
   2128 
   2129 /^[[:^graph:]]+$/utf,ucp
   2130     \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{1680}
   2131     \x{2028}\x{2029}\x{202f}\x{2065}
   2132     \x{3000}\x{e0002}\x{e001f}\x{e0080}
   2133 \= Expect no match
   2134     Letter:ABC
   2135     Mark:\x{300}\x{1d172}\x{1d17b}
   2136     Number:9\x{660}
   2137     Punctuation:\x{66a},;
   2138     Symbol:\x{6de}<>\x{fffc}
   2139     Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
   2140     \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
   2141     \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
   2142     \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
   2143     \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
   2144     \x{feff}
   2145     \x{fff9}\x{fffa}\x{fffb}
   2146     \x{110bd}
   2147     \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
   2148     \x{e0001}
   2149     \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
   2150 
   2151 /^[[:^print:]]+$/utf,ucp
   2152     \x{09}\x{1D}\x{85}\x{2028}\x{2029}\x{2065}
   2153     \x{e0002}\x{e001f}\x{e0080}
   2154 \= Expect no match
   2155     Space: \x{a0}
   2156     \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
   2157     \x{2006}\x{2007}\x{2008}\x{2009}\x{200a} 
   2158     \x{202f}\x{205f} 
   2159     \x{3000}
   2160     Letter:ABC
   2161     Mark:\x{300}\x{1d172}\x{1d17b}
   2162     Number:9\x{660}
   2163     Punctuation:\x{66a},;
   2164     Symbol:\x{6de}<>\x{fffc}
   2165     Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
   2166     \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
   2167     \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
   2168     \x{202f}
   2169     \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
   2170     \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
   2171     \x{feff}
   2172     \x{fff9}\x{fffa}\x{fffb}
   2173     \x{110bd}
   2174     \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
   2175     \x{e0001}
   2176     \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
   2177 
   2178 /^[[:^punct:]]+$/utf,ucp
   2179     abcde  
   2180 \= Expect no match
   2181     \$+<=>^`|~
   2182     !\"#%&'()*,-./:;?@[\\]_{}
   2183     \x{a1}\x{a7}  
   2184     \x{37e} 
   2185 
   2186 /[RST]+/i,utf,ucp
   2187     Ss\x{17f}
   2188     
   2189 /[R-T]+/i,utf,ucp
   2190     Ss\x{17f}
   2191 
   2192 /[q-u]+/i,utf,ucp
   2193     Ss\x{17f}
   2194 
   2195 /^s?c/im,utf
   2196     scat
   2197     
   2198 # The next four tests are for repeated caseless back references when the 
   2199 # code unit length of the matched text is different to that of the original
   2200 # group in the UTF-8 case.
   2201 
   2202 /^(\x{23a})\1*(.)/i,utf
   2203     \x{23a}\x{23a}\x{23a}\x{23a}
   2204     \x{23a}\x{2c65}\x{2c65}\x{2c65}
   2205     \x{23a}\x{23a}\x{2c65}\x{23a}
   2206 
   2207 /^(\x{23a})\1*(..)/i,utf
   2208     \x{23a}\x{2c65}\x{2c65}\x{2c65}
   2209     \x{23a}\x{23a}\x{2c65}\x{23a}
   2210 
   2211 /^(\x{23a})\1*(...)/i,utf
   2212     \x{23a}\x{2c65}\x{2c65}\x{2c65}
   2213     \x{23a}\x{23a}\x{2c65}\x{23a}
   2214 
   2215 /^(\x{23a})\1*(....)/i,utf
   2216 \= Expect no match
   2217     \x{23a}\x{2c65}\x{2c65}\x{2c65}
   2218     \x{23a}\x{23a}\x{2c65}\x{23a}
   2219 
   2220 /[A-`]/i,utf
   2221     abcdefghijklmno
   2222 
   2223 "[\S\V\H]"utf
   2224 
   2225 /[^\p{Any}]*+x/utf
   2226     x
   2227 
   2228 /[[:punct:]]/utf,ucp
   2229     \x{b4} 
   2230 
   2231 /[[:^ascii:]]/utf,ucp
   2232     \x{100}
   2233     \x{200}
   2234     \x{300}
   2235     \x{37e}
   2236 \= Expect no match     
   2237     aa
   2238     99
   2239     
   2240 /[[:^ascii:]\w]/utf,ucp
   2241     aa
   2242     99
   2243     gg
   2244     \x{100}
   2245     \x{200}
   2246     \x{300}
   2247     \x{37e}
   2248 
   2249 /[\w[:^ascii:]]/utf,ucp
   2250     aa
   2251     99
   2252     gg
   2253     \x{100}
   2254     \x{200}
   2255     \x{300}
   2256     \x{37e}
   2257 
   2258 /[^[:ascii:]\W]/utf,ucp
   2259     \x{100}
   2260     \x{200}
   2261 \= Expect no match     
   2262     aa
   2263     99
   2264     gg
   2265     \x{37e}
   2266 
   2267 /[^[:^ascii:]\d]/utf,ucp
   2268     a
   2269     ~
   2270     \a
   2271     \x{7f}
   2272 \= Expect no match
   2273     0
   2274     \x{389}
   2275     \x{20ac}
   2276 
   2277 /(?=.*b)\pL/
   2278     11bb
   2279     
   2280 /(?(?=.*b)(?=.*b)\pL|.*c)/
   2281     11bb
   2282 
   2283 /^\x{123}+?$/utf,no_auto_possess
   2284     \x{123}\x{123}\x{123}
   2285 
   2286 /^\x{123}+?$/i,utf,no_auto_possess
   2287     \x{123}\x{122}\x{123}
   2288 \= Expect no match     
   2289     \x{123}\x{124}\x{123}
   2290     
   2291 /\N{U+1234}/utf
   2292     \x{1234}
   2293 
   2294 /[\N{U+1234}]/utf
   2295     \x{1234}
   2296     
   2297 # Test the full list of Unicode "Pattern White Space" characters that are to
   2298 # be ignored by /x. The pattern lines below may show up oddly in text editors
   2299 # or when listed to the screen. Note that characters such as U+2002, which are
   2300 # matched as space by \h and \v are *not* "Pattern White Space".
   2301 
   2302 /AB/x,utf
   2306     AB
   2307 
   2308 /AB/x,utf
   2309     A\x{2002}B
   2310 \= Expect no match
   2311     AB
   2312     
   2313 # ------- 
   2314 
   2315 /[^\x{100}-\x{ffff}]*[\x80-\xff]/utf
   2316     \x{99}\x{99}\x{99}
   2317 
   2318 /[^\x{100}-\x{ffff}ABC]*[\x80-\xff]/utf
   2319     \x{99}\x{99}\x{99}
   2320 
   2321 /[^\x{100}-\x{ffff}]*[\x80-\xff]/i,utf
   2322     \x{99}\x{99}\x{99}
   2323 
   2324 # End of testinput4
   2325