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# WARNING: Use only / as the pattern delimiter. Although pcre2test supports
7# a number of delimiters, all those other than / give problems with the
8# perltest.sh script.
9
10#newline_default lf anycrlf any
11#perltest
12
13/a.b/utf
14    acb
15    a\x7fb
16    a\x{100}b
17\= Expect no match
18    a\nb
19
20/a(.{3})b/utf
21    a\x{4000}xyb
22    a\x{4000}\x7fyb
23    a\x{4000}\x{100}yb
24\= Expect no match
25    a\x{4000}b
26    ac\ncb
27
28/a(.*?)(.)/
29    a\xc0\x88b
30
31/a(.*?)(.)/utf
32    a\x{100}b
33
34/a(.*)(.)/
35    a\xc0\x88b
36
37/a(.*)(.)/utf
38    a\x{100}b
39
40/a(.)(.)/
41    a\xc0\x92bcd
42
43/a(.)(.)/utf
44    a\x{240}bcd
45
46/a(.?)(.)/
47    a\xc0\x92bcd
48
49/a(.?)(.)/utf
50    a\x{240}bcd
51
52/a(.??)(.)/
53    a\xc0\x92bcd
54
55/a(.??)(.)/utf
56    a\x{240}bcd
57
58/a(.{3})b/utf
59    a\x{1234}xyb
60    a\x{1234}\x{4321}yb
61    a\x{1234}\x{4321}\x{3412}b
62\= Expect no match
63    a\x{1234}b
64    ac\ncb
65
66/a(.{3,})b/utf
67    a\x{1234}xyb
68    a\x{1234}\x{4321}yb
69    a\x{1234}\x{4321}\x{3412}b
70    axxxxbcdefghijb
71    a\x{1234}\x{4321}\x{3412}\x{3421}b
72\= Expect no match
73    a\x{1234}b
74
75/a(.{3,}?)b/utf
76    a\x{1234}xyb
77    a\x{1234}\x{4321}yb
78    a\x{1234}\x{4321}\x{3412}b
79    axxxxbcdefghijb
80    a\x{1234}\x{4321}\x{3412}\x{3421}b
81\= Expect no match
82    a\x{1234}b
83
84/a(.{3,5})b/utf
85    a\x{1234}xyb
86    a\x{1234}\x{4321}yb
87    a\x{1234}\x{4321}\x{3412}b
88    axxxxbcdefghijb
89    a\x{1234}\x{4321}\x{3412}\x{3421}b
90    axbxxbcdefghijb
91    axxxxxbcdefghijb
92\= Expect no match
93    a\x{1234}b
94    axxxxxxbcdefghijb
95
96/a(.{3,5}?)b/utf
97    a\x{1234}xyb
98    a\x{1234}\x{4321}yb
99    a\x{1234}\x{4321}\x{3412}b
100    axxxxbcdefghijb
101    a\x{1234}\x{4321}\x{3412}\x{3421}b
102    axbxxbcdefghijb
103    axxxxxbcdefghijb
104\= Expect no match
105    a\x{1234}b
106    axxxxxxbcdefghijb
107
108/^[a\x{c0}]/utf
109\= Expect no match
110    \x{100}
111
112/(?<=aXb)cd/utf
113    aXbcd
114
115/(?<=a\x{100}b)cd/utf
116    a\x{100}bcd
117
118/(?<=a\x{100000}b)cd/utf
119    a\x{100000}bcd
120
121/(?:\x{100}){3}b/utf
122    \x{100}\x{100}\x{100}b
123\= Expect no match
124    \x{100}\x{100}b
125
126/\x{ab}/utf
127    \x{ab}
128    \xc2\xab
129\= Expect no match
130    \x00{ab}
131
132/(?<=(.))X/utf
133    WXYZ
134    \x{256}XYZ
135\= Expect no match
136    XYZ
137
138/[^a]+/g,utf
139    bcd
140    \x{100}aY\x{256}Z
141
142/^[^a]{2}/utf
143    \x{100}bc
144
145/^[^a]{2,}/utf
146    \x{100}bcAa
147
148/^[^a]{2,}?/utf
149    \x{100}bca
150
151/[^a]+/gi,utf
152    bcd
153    \x{100}aY\x{256}Z
154
155/^[^a]{2}/i,utf
156    \x{100}bc
157
158/^[^a]{2,}/i,utf
159    \x{100}bcAa
160
161/^[^a]{2,}?/i,utf
162    \x{100}bca
163
164/\x{100}{0,0}/utf
165    abcd
166
167/\x{100}?/utf
168    abcd
169    \x{100}\x{100}
170
171/\x{100}{0,3}/utf
172    \x{100}\x{100}
173    \x{100}\x{100}\x{100}\x{100}
174
175/\x{100}*/utf
176    abce
177    \x{100}\x{100}\x{100}\x{100}
178
179/\x{100}{1,1}/utf
180    abcd\x{100}\x{100}\x{100}\x{100}
181
182/\x{100}{1,3}/utf
183    abcd\x{100}\x{100}\x{100}\x{100}
184
185/\x{100}+/utf
186    abcd\x{100}\x{100}\x{100}\x{100}
187
188/\x{100}{3}/utf
189    abcd\x{100}\x{100}\x{100}XX
190
191/\x{100}{3,5}/utf
192    abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
193
194/\x{100}{3,}/utf
195    abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
196
197/(?<=a\x{100}{2}b)X/utf,aftertext
198    Xyyya\x{100}\x{100}bXzzz
199
200/\D*/utf
201  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
202
203/\D*/utf
204  \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}
205
206/\D/utf
207    1X2
208    1\x{100}2
209
210/>\S/utf
211    > >X Y
212    > >\x{100} Y
213
214/\d/utf
215    \x{100}3
216
217/\s/utf
218    \x{100} X
219
220/\D+/utf
221    12abcd34
222\= Expect no match
223    1234
224
225/\D{2,3}/utf
226    12abcd34
227    12ab34
228\= Expect no match
229    1234
230    12a34
231
232/\D{2,3}?/utf
233    12abcd34
234    12ab34
235\= Expect no match
236    1234
237    12a34
238
239/\d+/utf
240    12abcd34
241
242/\d{2,3}/utf
243    12abcd34
244    1234abcd
245\= Expect no match
246    1.4
247
248/\d{2,3}?/utf
249    12abcd34
250    1234abcd
251\= Expect no match
252    1.4
253
254/\S+/utf
255    12abcd34
256\= Expect no match
257    \    \
258
259/\S{2,3}/utf
260    12abcd34
261    1234abcd
262\= Expect no match
263    \     \
264
265/\S{2,3}?/utf
266    12abcd34
267    1234abcd
268\= Expect no match
269    \     \
270
271/>\s+</utf,aftertext
272    12>      <34
273
274/>\s{2,3}</utf,aftertext
275    ab>  <cd
276    ab>   <ce
277\= Expect no match
278    ab>    <cd
279
280/>\s{2,3}?</utf,aftertext
281    ab>  <cd
282    ab>   <ce
283\= Expect no match
284    ab>    <cd
285
286/\w+/utf
287    12      34
288\= Expect no match
289    +++=*!
290
291/\w{2,3}/utf
292    ab  cd
293    abcd ce
294\= Expect no match
295    a.b.c
296
297/\w{2,3}?/utf
298    ab  cd
299    abcd ce
300\= Expect no match
301    a.b.c
302
303/\W+/utf
304    12====34
305\= Expect no match
306    abcd
307
308/\W{2,3}/utf
309    ab====cd
310    ab==cd
311\= Expect no match
312    a.b.c
313
314/\W{2,3}?/utf
315    ab====cd
316    ab==cd
317\= Expect no match
318    a.b.c
319
320/[\x{100}]/utf
321    \x{100}
322    Z\x{100}
323    \x{100}Z
324
325/[Z\x{100}]/utf
326    Z\x{100}
327    \x{100}
328    \x{100}Z
329
330/[\x{100}\x{200}]/utf
331    ab\x{100}cd
332    ab\x{200}cd
333
334/[\x{100}-\x{200}]/utf
335    ab\x{100}cd
336    ab\x{200}cd
337    ab\x{111}cd
338
339/[z-\x{200}]/utf
340    ab\x{100}cd
341    ab\x{200}cd
342    ab\x{111}cd
343    abzcd
344    ab|cd
345
346/[Q\x{100}\x{200}]/utf
347    ab\x{100}cd
348    ab\x{200}cd
349    Q?
350
351/[Q\x{100}-\x{200}]/utf
352    ab\x{100}cd
353    ab\x{200}cd
354    ab\x{111}cd
355    Q?
356
357/[Qz-\x{200}]/utf
358    ab\x{100}cd
359    ab\x{200}cd
360    ab\x{111}cd
361    abzcd
362    ab|cd
363    Q?
364
365/[\x{100}\x{200}]{1,3}/utf
366    ab\x{100}cd
367    ab\x{200}cd
368    ab\x{200}\x{100}\x{200}\x{100}cd
369
370/[\x{100}\x{200}]{1,3}?/utf
371    ab\x{100}cd
372    ab\x{200}cd
373    ab\x{200}\x{100}\x{200}\x{100}cd
374
375/[Q\x{100}\x{200}]{1,3}/utf
376    ab\x{100}cd
377    ab\x{200}cd
378    ab\x{200}\x{100}\x{200}\x{100}cd
379
380/[Q\x{100}\x{200}]{1,3}?/utf
381    ab\x{100}cd
382    ab\x{200}cd
383    ab\x{200}\x{100}\x{200}\x{100}cd
384
385/(?<=[\x{100}\x{200}])X/utf
386    abc\x{200}X
387    abc\x{100}X
388\= Expect no match
389    X
390
391/(?<=[Q\x{100}\x{200}])X/utf
392    abc\x{200}X
393    abc\x{100}X
394    abQX
395\= Expect no match
396    X
397
398/(?<=[\x{100}\x{200}]{3})X/utf
399    abc\x{100}\x{200}\x{100}X
400\= Expect no match
401    abc\x{200}X
402    X
403
404/[^\x{100}\x{200}]X/utf
405    AX
406    \x{150}X
407    \x{500}X
408\= Expect no match
409    \x{100}X
410    \x{200}X
411
412/[^Q\x{100}\x{200}]X/utf
413    AX
414    \x{150}X
415    \x{500}X
416\= Expect no match
417    \x{100}X
418    \x{200}X
419    QX
420
421/[^\x{100}-\x{200}]X/utf
422    AX
423    \x{500}X
424\= Expect no match
425    \x{100}X
426    \x{150}X
427    \x{200}X
428
429/[z-\x{100}]/i,utf
430    z
431    Z
432    \x{100}
433\= Expect no match
434    \x{102}
435    y
436
437/[\xFF]/
438    >\xff<
439
440/[\xff]/utf
441    >\x{ff}<
442
443/[^\xFF]/
444    XYZ
445
446/[^\xff]/utf
447    XYZ
448    \x{123}
449
450/^[ac]*b/utf
451\= Expect no match
452  xb
453
454/^[ac\x{100}]*b/utf
455\= Expect no match
456  xb
457
458/^[^x]*b/i,utf
459\= Expect no match
460  xb
461
462/^[^x]*b/utf
463\= Expect no match
464  xb
465
466/^\d*b/utf
467\= Expect no match
468  xb
469
470/(|a)/g,utf
471    catac
472    a\x{256}a
473
474/^\x{85}$/i,utf
475    \x{85}
476
477/^ሴ/utf
478479
480/^\ሴ/utf
481482
483/(?s)(.{1,5})/utf
484    abcdefg
485    ab
486
487/a*\x{100}*\w/utf
488    a
489
490/\S\S/g,utf
491    A\x{a3}BC
492
493/\S{2}/g,utf
494    A\x{a3}BC
495
496/\W\W/g,utf
497    +\x{a3}==
498
499/\W{2}/g,utf
500    +\x{a3}==
501
502/\S/g,utf
503    \x{442}\x{435}\x{441}\x{442}
504
505/[\S]/g,utf
506    \x{442}\x{435}\x{441}\x{442}
507
508/\D/g,utf
509    \x{442}\x{435}\x{441}\x{442}
510
511/[\D]/g,utf
512    \x{442}\x{435}\x{441}\x{442}
513
514/\W/g,utf
515    \x{2442}\x{2435}\x{2441}\x{2442}
516
517/[\W]/g,utf
518    \x{2442}\x{2435}\x{2441}\x{2442}
519
520/[\S\s]*/utf
521    abc\n\r\x{442}\x{435}\x{441}\x{442}xyz
522
523/[\x{41f}\S]/g,utf
524    \x{442}\x{435}\x{441}\x{442}
525
526/.[^\S]./g,utf
527    abc def\x{442}\x{443}xyz\npqr
528
529/.[^\S\n]./g,utf
530    abc def\x{442}\x{443}xyz\npqr
531
532/[[:^alnum:]]/g,utf
533    +\x{2442}
534
535/[[:^alpha:]]/g,utf
536    +\x{2442}
537
538/[[:^ascii:]]/g,utf
539    A\x{442}
540
541/[[:^blank:]]/g,utf
542    A\x{442}
543
544/[[:^cntrl:]]/g,utf
545    A\x{442}
546
547/[[:^digit:]]/g,utf
548    A\x{442}
549
550/[[:^graph:]]/g,utf
551    \x19\x{e01ff}
552
553/[[:^lower:]]/g,utf
554    A\x{422}
555
556/[[:^print:]]/g,utf
557    \x{19}\x{e01ff}
558
559/[[:^punct:]]/g,utf
560    A\x{442}
561
562/[[:^space:]]/g,utf
563    A\x{442}
564
565/[[:^upper:]]/g,utf
566    a\x{442}
567
568/[[:^word:]]/g,utf
569    +\x{2442}
570
571/[[:^xdigit:]]/g,utf
572    M\x{442}
573
574/[^ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉƊƋƎƏƐƑƓƔƖƗƘƜƝƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫϒϓϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸԀԂԄԆԈԊԌԎԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸἈἉἊἋἌἍἎἏἘἙἚἛἜἝἨἩἪἫἬἭἮἯἸἹἺἻἼἽἾἿὈὉὊὋὌὍὙὛὝὟὨὩὪὫὬὭὮὯᾸᾹᾺΆῈΈῊΉῘῙῚΊῨῩῪΎῬῸΌῺΏabcdefghijklmnopqrstuvwxyzªµºßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżžſƀƃƅƈƌƍƒƕƙƚƛƞơƣƥƨƪƫƭưƴƶƹƺƽƾƿdžljnjǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳȴȵȶȷȸȹȼȿɀɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯΐάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϐϑϕϖϗϙϛϝϟϡϣϥϧϩϫϭϯϰϱϲϳϵϸϻϼабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹԁԃԅԇԉԋԍԏաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆևᴀᴁᴂᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌᴍᴎᴏᴐᴑᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜᴝᴞᴟᴠᴡᴢᴣᴤᴥᴦᴧᴨᴩᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬᵭᵮᵯᵰᵱᵲᵳᵴᵵᵶᵷᵹᵺᵻᵼᵽᵾᵿᶀᶁᶂᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌᶍᶎᶏᶐᶑᶒᶓᶔᶕᶖᶗᶘᶙᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕẖẗẘẙẚẛạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹἀἁἂἃἄἅἆἇἐἑἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀὁὂὃὄὅὐὑὒὓὔὕὖὗὠὡὢὣὤὥὦὧὰάὲέὴήὶίὸόὺύὼώᾀᾁᾂᾃᾄᾅᾆᾇᾐᾑᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷιῂῃῄῆῇῐῑῒΐῖῗῠῡῢΰῤῥῦῧῲῳῴῶῷⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⴀⴁⴂⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌⴍⴎⴏⴐⴑⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜⴝⴞⴟⴠⴡⴢⴣⴤⴥfffiflffifflſtstﬓﬔﬕﬖﬗ\d_^]/utf
575
576/^[^d]*?$/
577    abc
578
579/^[^d]*?$/utf
580    abc
581
582/^[^d]*?$/i
583    abc
584
585/^[^d]*?$/i,utf
586    abc
587
588/(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]/utf
589
590/^[a\x{c0}]b/utf
591    \x{c0}b
592
593/^([a\x{c0}]*?)aa/utf
594    a\x{c0}aaaa/
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}]*)aa/utf
601    a\x{c0}aaaa/
602    a\x{c0}a\x{c0}aaa/
603
604/^([a\x{c0}]*)a\x{c0}/utf
605    a\x{c0}aaaa/
606    a\x{c0}a\x{c0}aaa/
607
608/A*/g,utf
609    AAB\x{123}BAA
610
611/(abc)\1/i,utf
612\= Expect no match
613   abc
614
615/(abc)\1/utf
616\= Expect no match
617   abc
618
619/a(*:a\x{1234}b)/utf,mark
620    abc
621
622/a(*:a£b)/utf,mark
623    abc
624
625# Noncharacters
626
627/./utf
628    \x{fffe}
629    \x{ffff}
630    \x{1fffe}
631    \x{1ffff}
632    \x{2fffe}
633    \x{2ffff}
634    \x{3fffe}
635    \x{3ffff}
636    \x{4fffe}
637    \x{4ffff}
638    \x{5fffe}
639    \x{5ffff}
640    \x{6fffe}
641    \x{6ffff}
642    \x{7fffe}
643    \x{7ffff}
644    \x{8fffe}
645    \x{8ffff}
646    \x{9fffe}
647    \x{9ffff}
648    \x{afffe}
649    \x{affff}
650    \x{bfffe}
651    \x{bffff}
652    \x{cfffe}
653    \x{cffff}
654    \x{dfffe}
655    \x{dffff}
656    \x{efffe}
657    \x{effff}
658    \x{ffffe}
659    \x{fffff}
660    \x{10fffe}
661    \x{10ffff}
662    \x{fdd0}
663    \x{fdd1}
664    \x{fdd2}
665    \x{fdd3}
666    \x{fdd4}
667    \x{fdd5}
668    \x{fdd6}
669    \x{fdd7}
670    \x{fdd8}
671    \x{fdd9}
672    \x{fdda}
673    \x{fddb}
674    \x{fddc}
675    \x{fddd}
676    \x{fdde}
677    \x{fddf}
678    \x{fde0}
679    \x{fde1}
680    \x{fde2}
681    \x{fde3}
682    \x{fde4}
683    \x{fde5}
684    \x{fde6}
685    \x{fde7}
686    \x{fde8}
687    \x{fde9}
688    \x{fdea}
689    \x{fdeb}
690    \x{fdec}
691    \x{fded}
692    \x{fdee}
693    \x{fdef}
694
695/^\d*\w{4}/utf
696    1234
697\= Expect no match
698    123
699
700/^[^b]*\w{4}/utf
701    aaaa
702\= Expect no match
703    aaa
704
705/^[^b]*\w{4}/i,utf
706    aaaa
707\= Expect no match
708    aaa
709
710/^\x{100}*.{4}/utf
711    \x{100}\x{100}\x{100}\x{100}
712\= Expect no match
713    \x{100}\x{100}\x{100}
714
715/^\x{100}*.{4}/i,utf
716    \x{100}\x{100}\x{100}\x{100}
717\= Expect no match
718    \x{100}\x{100}\x{100}
719
720/^a+[a\x{200}]/utf
721    aa
722
723/^.\B.\B./utf
724    \x{10123}\x{10124}\x{10125}
725
726/^#[^\x{ffff}]#[^\x{ffff}]#[^\x{ffff}]#/utf
727    #\x{10000}#\x{100}#\x{10ffff}#
728
729# Unicode property support tests
730
731/^\pC\pL\pM\pN\pP\pS\pZ</utf
732    \x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
733    \np\x{300}9!\$ <
734\= Expect no match
735    ap\x{300}9!\$ <
736
737/^\PC/utf
738    X
739\= Expect no match
740    \x7f
741
742/^\PL/utf
743    9
744\= Expect no match
745    \x{c0}
746
747/^\PM/utf
748    X
749\= Expect no match
750    \x{30f}
751
752/^\PN/utf
753    X
754\= Expect no match
755    \x{660}
756
757/^\PP/utf
758    X
759\= Expect no match
760    \x{66c}
761
762/^\PS/utf
763    X
764\= Expect no match
765    \x{f01}
766
767/^\PZ/utf
768    X
769\= Expect no match
770    \x{1680}
771
772/^\p{Cc}/utf
773    \x{017}
774    \x{09f}
775\= Expect no match
776    \x{0600}
777
778/^\p{Cf}/utf
779    \x{601}
780\= Expect no match
781    \x{09f}
782
783/^\p{Cn}/utf
784    \x{e0000}
785\= Expect no match
786    \x{09f}
787
788/^\p{Co}/utf
789    \x{f8ff}
790\= Expect no match
791    \x{09f}
792
793/^\p{Ll}/utf
794    a
795\= Expect no match
796    Z
797    \x{e000}
798
799/^\p{Lm}/utf
800    \x{2b0}
801\= Expect no match
802    a
803
804/^\p{Lo}/utf
805    \x{1bb}
806    \x{3400}
807    \x{3401}
808    \x{4d00}
809    \x{4db4}
810    \x{4db5}
811    \x{4db6}
812\= Expect no match
813    a
814    \x{2b0}
815
816/^\p{Lt}/utf
817    \x{1c5}
818\= Expect no match
819    a
820    \x{2b0}
821
822/^\p{Lu}/utf
823    A
824\= Expect no match
825    \x{2b0}
826
827/^\p{Mc}/utf
828    \x{903}
829\= Expect no match
830    X
831    \x{300}
832
833/^\p{Me}/utf
834    \x{488}
835\= Expect no match
836    X
837    \x{903}
838    \x{300}
839
840/^\p{Mn}/utf
841    \x{300}
842\= Expect no match
843    X
844    \x{903}
845
846/^\p{Nd}+/utf
847    0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
848    \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
849    \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
850\= Expect no match
851    X
852
853/^\p{Nl}/utf
854    \x{16ee}
855\= Expect no match
856    X
857    \x{966}
858
859/^\p{No}/utf
860    \x{b2}
861    \x{b3}
862\= Expect no match
863    X
864    \x{16ee}
865
866/^\p{Pc}/utf
867    \x5f
868    \x{203f}
869\= Expect no match
870    X
871    -
872    \x{58a}
873
874/^\p{Pd}/utf
875    -
876    \x{58a}
877\= Expect no match
878    X
879    \x{203f}
880
881/^\p{Pe}/utf
882    )
883    ]
884    }
885    \x{f3b}
886\= Expect no match
887    X
888    \x{203f}
889    (
890    [
891    {
892    \x{f3c}
893
894/^\p{Pf}/utf
895    \x{bb}
896    \x{2019}
897\= Expect no match
898    X
899    \x{203f}
900
901/^\p{Pi}/utf
902    \x{ab}
903    \x{2018}
904\= Expect no match
905    X
906    \x{203f}
907
908/^\p{Po}/utf
909    !
910    \x{37e}
911\= Expect no match
912    X
913    \x{203f}
914
915/^\p{Ps}/utf
916    (
917    [
918    {
919    \x{f3c}
920\= Expect no match
921    X
922    )
923    ]
924    }
925    \x{f3b}
926
927/^\p{Sk}/utf
928    \x{2c2}
929\= Expect no match
930    X
931    \x{9f2}
932
933/^\p{Sm}+/utf
934    +<|~\x{ac}\x{2044}
935\= Expect no match
936    X
937    \x{9f2}
938
939/^\p{So}/utf
940    \x{a6}
941    \x{482}
942\= Expect no match
943    X
944    \x{9f2}
945
946/^\p{Zl}/utf
947    \x{2028}
948\= Expect no match
949    X
950    \x{2029}
951
952/^\p{Zp}/utf
953    \x{2029}
954\= Expect no match
955    X
956    \x{2028}
957
958/\p{Nd}+(..)/utf
959    \x{660}\x{661}\x{662}ABC
960
961/\p{Nd}+?(..)/utf
962    \x{660}\x{661}\x{662}ABC
963
964/\p{Nd}{2,}(..)/utf
965    \x{660}\x{661}\x{662}ABC
966
967/\p{Nd}{2,}?(..)/utf
968    \x{660}\x{661}\x{662}ABC
969
970/\p{Nd}*(..)/utf
971    \x{660}\x{661}\x{662}ABC
972
973/\p{Nd}*?(..)/utf
974    \x{660}\x{661}\x{662}ABC
975
976/\p{Nd}{2}(..)/utf
977    \x{660}\x{661}\x{662}ABC
978
979/\p{Nd}{2,3}(..)/utf
980    \x{660}\x{661}\x{662}ABC
981
982/\p{Nd}{2,3}?(..)/utf
983    \x{660}\x{661}\x{662}ABC
984
985/\p{Nd}?(..)/utf
986    \x{660}\x{661}\x{662}ABC
987
988/\p{Nd}??(..)/utf
989    \x{660}\x{661}\x{662}ABC
990
991/\p{Nd}*+(..)/utf
992    \x{660}\x{661}\x{662}ABC
993
994/\p{Nd}*+(...)/utf
995    \x{660}\x{661}\x{662}ABC
996
997/\p{Nd}*+(....)/utf
998\= Expect no match
999    \x{660}\x{661}\x{662}ABC
1000
1001/(?<=A\p{Nd})XYZ/utf
1002    A2XYZ
1003    123A5XYZPQR
1004    ABA\x{660}XYZpqr
1005\= Expect no match
1006    AXYZ
1007    XYZ
1008
1009/(?<!\pL)XYZ/utf
1010    1XYZ
1011    AB=XYZ..
1012    XYZ
1013\= Expect no match
1014    WXYZ
1015
1016/[\P{Nd}]+/utf
1017    abcd
1018\= Expect no match
1019    1234
1020
1021/\D+/utf
1022    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1023\= Expect no match
1024    11111111111111111111111111111111111111111111111111111111111111111111111
1025
1026/\P{Nd}+/utf
1027    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1028\= Expect no match
1029    11111111111111111111111111111111111111111111111111111111111111111111111
1030
1031/[\D]+/utf
1032    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1033\= Expect no match
1034    11111111111111111111111111111111111111111111111111111111111111111111111
1035
1036/[\P{Nd}]+/utf
1037    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1038\= Expect no match
1039    11111111111111111111111111111111111111111111111111111111111111111111111
1040
1041/[\D\P{Nd}]+/utf
1042    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1043\= Expect no match
1044    11111111111111111111111111111111111111111111111111111111111111111111111
1045
1046/\pL/utf
1047    a
1048    A
1049
1050/\pL/i,utf
1051    a
1052    A
1053
1054/\p{Lu}/utf
1055    A
1056    aZ
1057\= Expect no match
1058    abc
1059
1060/\p{Ll}/utf
1061    a
1062    Az
1063\= Expect no match
1064    ABC
1065
1066/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
1067    A\x{391}\x{10427}\x{ff3a}\x{1fb0}
1068\= Expect no match
1069    a\x{391}\x{10427}\x{ff3a}\x{1fb0}
1070    A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
1071    A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
1072    A\x{391}\x{10427}\x{ff5a}\x{1fb0}
1073    A\x{391}\x{10427}\x{ff3a}\x{1fb8}
1074
1075/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
1076    A\x{391}\x{10427}\x{ff3a}\x{1fb0}
1077    a\x{391}\x{10427}\x{ff3a}\x{1fb0}
1078    A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
1079    A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
1080    A\x{391}\x{10427}\x{ff5a}\x{1fb0}
1081    A\x{391}\x{10427}\x{ff3a}\x{1fb8}
1082
1083/\x{391}+/i,utf
1084    \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
1085
1086/\x{391}{3,5}(.)/i,utf
1087    \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
1088
1089/\x{391}{3,5}?(.)/i,utf
1090    \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
1091
1092/[\x{391}\x{ff3a}]/i,utf
1093    \x{391}
1094    \x{ff3a}
1095    \x{3b1}
1096    \x{ff5a}
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*?)C/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    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
1112    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1113
1114/^\X(.)/utf
1115\= Expect no match
1116    A\x{300}\x{301}\x{302}
1117
1118/^\X{2,3}(.)/utf
1119    A\x{300}\x{301}B\x{300}X
1120    A\x{300}\x{301}B\x{300}C\x{300}\x{301}
1121    A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
1122    A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
1123
1124/^\X{2,3}?(.)/utf
1125    A\x{300}\x{301}B\x{300}X
1126    A\x{300}\x{301}B\x{300}C\x{300}\x{301}
1127    A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
1128    A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
1129
1130/^\X/utf
1131    A
1132    A\x{300}BC
1133    A\x{300}\x{301}\x{302}BC
1134    \x{300}
1135
1136/^\p{Han}+/utf
1137    \x{2e81}\x{3007}\x{2f804}\x{31a0}
1138\= Expect no match
1139    \x{2e7f}
1140
1141/^\P{Katakana}+/utf
1142    \x{3105}
1143\= Expect no match
1144    \x{30ff}
1145
1146/^[\p{Arabic}]/utf
1147    \x{06e9}
1148    \x{060b}
1149\= Expect no match
1150    X\x{06e9}
1151
1152/^[\P{Yi}]/utf
1153    \x{2f800}
1154\= Expect no match
1155    \x{a014}
1156    \x{a4c6}
1157
1158/^\p{Any}X/utf
1159    AXYZ
1160    \x{1234}XYZ
1161\= Expect no match
1162    X
1163
1164/^\P{Any}X/utf
1165\= Expect no match
1166    AX
1167
1168/^\p{Any}?X/utf
1169    XYZ
1170    AXYZ
1171    \x{1234}XYZ
1172\= Expect no match
1173    ABXYZ
1174
1175/^\P{Any}?X/utf
1176    XYZ
1177\= Expect no match
1178    AXYZ
1179    \x{1234}XYZ
1180    ABXYZ
1181
1182/^\p{Any}+X/utf
1183    AXYZ
1184    \x{1234}XYZ
1185    A\x{1234}XYZ
1186\= Expect no match
1187    XYZ
1188
1189/^\P{Any}+X/utf
1190\= Expect no match
1191    AXYZ
1192    \x{1234}XYZ
1193    A\x{1234}XYZ
1194    XYZ
1195
1196/^\p{Any}*X/utf
1197    XYZ
1198    AXYZ
1199    \x{1234}XYZ
1200    A\x{1234}XYZ
1201
1202/^\P{Any}*X/utf
1203    XYZ
1204\= Expect no match
1205    AXYZ
1206    \x{1234}XYZ
1207    A\x{1234}XYZ
1208
1209/^[\p{Any}]X/utf
1210    AXYZ
1211    \x{1234}XYZ
1212\= Expect no match
1213    X
1214
1215/^[\P{Any}]X/utf
1216\= Expect no match
1217    AX
1218
1219/^[\p{Any}]?X/utf
1220    XYZ
1221    AXYZ
1222    \x{1234}XYZ
1223\= Expect no match
1224    ABXYZ
1225
1226/^[\P{Any}]?X/utf
1227    XYZ
1228\= Expect no match
1229    AXYZ
1230    \x{1234}XYZ
1231    ABXYZ
1232
1233/^[\p{Any}]+X/utf
1234    AXYZ
1235    \x{1234}XYZ
1236    A\x{1234}XYZ
1237\= Expect no match
1238    XYZ
1239
1240/^[\P{Any}]+X/utf
1241\= Expect no match
1242    AXYZ
1243    \x{1234}XYZ
1244    A\x{1234}XYZ
1245    XYZ
1246
1247/^[\p{Any}]*X/utf
1248    XYZ
1249    AXYZ
1250    \x{1234}XYZ
1251    A\x{1234}XYZ
1252
1253/^[\P{Any}]*X/utf
1254    XYZ
1255\= Expect no match
1256    AXYZ
1257    \x{1234}XYZ
1258    A\x{1234}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    abcdefgh
1266    \x{1234}\n\r\x{3456}xyz
1267
1268/^\P{Any}{3,5}?/utf
1269\= Expect no match
1270    abcdefgh
1271    \x{1234}\n\r\x{3456}xyz
1272
1273/^\p{L&}X/utf
1274     AXY
1275     aXY
1276     \x{1c5}XY
1277\= Expect no match
1278    \x{1bb}XY
1279    \x{2b0}XY
1280    !XY
1281
1282/^[\p{L&}]X/utf
1283    AXY
1284    aXY
1285     \x{1c5}XY
1286\= Expect no match
1287    \x{1bb}XY
1288    \x{2b0}XY
1289    !XY
1290
1291/^\p{L&}+X/utf
1292    AXY
1293    aXY
1294    AbcdeXyz
1295    \x{1c5}AbXY
1296    abcDEXypqreXlmn
1297\= Expect no match
1298    \x{1bb}XY
1299    \x{2b0}XY
1300    !XY
1301
1302/^[\p{L&}]+X/utf
1303    AXY
1304    aXY
1305    AbcdeXyz
1306    \x{1c5}AbXY
1307    abcDEXypqreXlmn
1308\= Expect no match
1309    \x{1bb}XY
1310    \x{2b0}XY
1311    !XY
1312
1313/^\p{L&}+?X/utf
1314    AXY
1315    aXY
1316    AbcdeXyz
1317    \x{1c5}AbXY
1318    abcDEXypqreXlmn
1319\= Expect no match
1320    \x{1bb}XY
1321    \x{2b0}XY
1322    !XY
1323
1324/^[\p{L&}]+?X/utf
1325    AXY
1326    aXY
1327    AbcdeXyz
1328    \x{1c5}AbXY
1329    abcDEXypqreXlmn
1330\= Expect no match
1331    \x{1bb}XY
1332    \x{2b0}XY
1333    !XY
1334
1335/^\P{L&}X/utf
1336    !XY
1337    \x{1bb}XY
1338    \x{2b0}XY
1339\= Expect no match
1340    \x{1c5}XY
1341    AXY
1342
1343/^[\P{L&}]X/utf
1344    !XY
1345    \x{1bb}XY
1346    \x{2b0}XY
1347\= Expect no match
1348    \x{1c5}XY
1349    AXY
1350
1351/^(\p{Z}[^\p{C}\p{Z}]+)*$/
1352    \xa0!
1353
1354/^[\pL](abc)(?1)/
1355    AabcabcYZ
1356
1357/([\pL]=(abc))*X/
1358    L=abcX
1359
1360/^\p{Balinese}\p{Cuneiform}\p{Nko}\p{Phags_Pa}\p{Phoenician}/utf
1361    \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}
1362
1363# Check property support in non-UTF mode
1364
1365/\p{L}{4}/
1366    123abcdefg
1367    123abc\xc4\xc5zz
1368
1369/\X{1,3}\d/
1370\= Expect no match
1371    \x8aBCD
1372
1373/\X?\d/
1374\= Expect no match
1375    \x8aBCD
1376
1377/\P{L}?\d/
1378\= Expect no match
1379    \x8aBCD
1380
1381/[\PPP\x8a]{1,}\x80/
1382    A\x80
1383
1384/^[\p{Arabic}]/utf
1385    \x{604}
1386    \x{60e}
1387    \x{656}
1388    \x{657}
1389    \x{658}
1390    \x{659}
1391    \x{65a}
1392    \x{65b}
1393    \x{65c}
1394    \x{65d}
1395    \x{65e}
1396    \x{65f}
1397    \x{66a}
1398    \x{6e9}
1399    \x{6ef}
1400    \x{6fa}
1401
1402/^\p{Cyrillic}/utf
1403    \x{1d2b}
1404
1405/^\p{Common}/utf
1406    \x{2116}
1407    \x{1D183}
1408
1409/^\p{Inherited}/utf
1410    \x{200c}
1411\= Expect no match
1412    \x{64a}
1413    \x{656}
1414
1415/^\p{Shavian}/utf
1416    \x{10450}
1417    \x{1047f}
1418
1419/^\p{Deseret}/utf
1420    \x{10400}
1421    \x{1044f}
1422
1423/^\p{Osmanya}/utf
1424    \x{10480}
1425    \x{1049d}
1426    \x{104a0}
1427    \x{104a9}
1428\= Expect no match
1429    \x{1049e}
1430    \x{1049f}
1431    \x{104aa}
1432
1433/\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
1434    \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
1435
1436/\x{a77d}\x{1d79}/i,utf
1437    \x{a77d}\x{1d79}
1438    \x{1d79}\x{a77d}
1439
1440/\x{a77d}\x{1d79}/utf
1441    \x{a77d}\x{1d79}
1442\= Expect no match
1443    \x{1d79}\x{a77d}
1444
1445/(A)\1/i,utf
1446    AA
1447    Aa
1448    aa
1449    aA
1450
1451/(\x{10a})\1/i,utf
1452    \x{10a}\x{10a}
1453    \x{10a}\x{10b}
1454    \x{10b}\x{10b}
1455    \x{10b}\x{10a}
1456
1457# The next two tests are for property support in non-UTF mode
1458
1459/(?:\p{Lu}|\x20)+/
1460    \x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
1461
1462/[\p{Lu}\x20]+/
1463    \x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
1464
1465/\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
1466    \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}
1467
1468/^\w+/utf,ucp
1469    Az_\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
1470
1471/^[[:xdigit:]]*/utf,ucp
1472    1a\x{660}\x{bef}\x{16ee}
1473
1474/^\d+/utf,ucp
1475    1\x{660}\x{bef}\x{16ee}
1476
1477/^[[:digit:]]+/utf,ucp
1478    1\x{660}\x{bef}\x{16ee}
1479
1480/^>\s+/utf,ucp
1481    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
1482
1483/^>\pZ+/utf,ucp
1484    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
1485
1486/^>[[:space:]]*/utf,ucp
1487    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
1488
1489/^>[[:blank:]]*/utf,ucp
1490    >\x{20}\x{a0}\x{1680}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
1491
1492/^[[:alpha:]]*/utf,ucp
1493    Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}
1494
1495/^[[:alnum:]]*/utf,ucp
1496    Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
1497
1498/^[[:cntrl:]]*/utf,ucp
1499    \x{0}\x{09}\x{1f}\x{7f}\x{9f}
1500
1501/^[[:graph:]]*/utf,ucp
1502    A\x{a1}\x{a0}
1503
1504/^[[:print:]]*/utf,ucp
1505    A z\x{a0}\x{a1}
1506
1507/^[[:punct:]]*/utf,ucp
1508    .+\x{a1}\x{a0}
1509
1510/\p{Zs}*?\R/
1511\= Expect no match
1512    a\xFCb
1513
1514/\p{Zs}*\R/
1515\= Expect no match
1516    a\xFCb
1517
1518/ⱥ/i,utf
15191520    Ⱥx
1521    Ⱥ
1522
1523/[ⱥ]/i,utf
15241525    Ⱥx
1526    Ⱥ
1527
1528/Ⱥ/i,utf
1529    Ⱥ
15301531
1532# These are tests for extended grapheme clusters
1533
1534/^\X/utf,aftertext
1535    G\x{34e}\x{34e}X
1536    \x{34e}\x{34e}X
1537    \x04X
1538    \x{1100}X
1539    \x{1100}\x{34e}X
1540    \x{1b04}\x{1b04}X
1541    *These match up to the roman letters
1542    \x{1111}\x{1111}L,L
1543    \x{1111}\x{1111}\x{1169}L,L,V
1544    \x{1111}\x{ae4c}L, LV
1545    \x{1111}\x{ad89}L, LVT
1546    \x{1111}\x{ae4c}\x{1169}L, LV, V
1547    \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
1548    \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
1549    \x{1111}\x{ad89}\x{11fe}L, LVT, T
1550    \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
1551    \x{ad89}\x{11fe}\x{11fe}LVT, T, T
1552    *These match just the first codepoint (invalid sequence)
1553    \x{1111}\x{11fe}L, T
1554    \x{ae4c}\x{1111}LV, L
1555    \x{ae4c}\x{ae4c}LV, LV
1556    \x{ae4c}\x{ad89}LV, LVT
1557    \x{1169}\x{1111}V, L
1558    \x{1169}\x{ae4c}V, LV
1559    \x{1169}\x{ad89}V, LVT
1560    \x{ad89}\x{1111}LVT, L
1561    \x{ad89}\x{1169}LVT, V
1562    \x{ad89}\x{ae4c}LVT, LV
1563    \x{ad89}\x{ad89}LVT, LVT
1564    \x{11fe}\x{1111}T, L
1565    \x{11fe}\x{1169}T, V
1566    \x{11fe}\x{ae4c}T, LV
1567    \x{11fe}\x{ad89}T, LVT
1568    *Test extend and spacing mark
1569    \x{1111}\x{ae4c}\x{0711}L, LV, extend
1570    \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
1571    \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
1572    *Test CR, LF, and control
1573    \x0d\x{0711}CR, extend
1574    \x0d\x{1b04}CR, spacingmark
1575    \x0a\x{0711}LF, extend
1576    \x0a\x{1b04}LF, spacingmark
1577    \x0b\x{0711}Control, extend
1578    \x09\x{1b04}Control, spacingmark
1579    *There are no Prepend characters, so we can't test Prepend, CR
1580
1581/^(?>\X{2})X/utf,aftertext
1582    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1583
1584/^\X{2,4}X/utf,aftertext
1585    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1586    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1587    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1588
1589/^\X{2,4}?X/utf,aftertext
1590    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1591    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1592    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1593
1594/\X*Z/utf,no_start_optimize
1595\= Expect no match
1596    A\x{300}
1597
1598/\X*(.)/utf,no_start_optimize
1599    A\x{1111}\x{ae4c}\x{1169}
1600
1601# --------------------------------------------
1602
1603/\x{1e9e}+/i,utf
1604    \x{1e9e}\x{00df}
1605
1606/[z\x{1e9e}]+/i,utf
1607    \x{1e9e}\x{00df}
1608
1609/\x{00df}+/i,utf
1610    \x{1e9e}\x{00df}
1611
1612/[z\x{00df}]+/i,utf
1613    \x{1e9e}\x{00df}
1614
1615/\x{1f88}+/i,utf
1616    \x{1f88}\x{1f80}
1617
1618/[z\x{1f88}]+/i,utf
1619    \x{1f88}\x{1f80}
1620
1621# Check a reference with more than one other case
1622
1623/^(\x{00b5})\1{2}$/i,utf
1624    \x{00b5}\x{039c}\x{03bc}
1625
1626# Characters with more than one other case; test in classes
1627
1628/[z\x{00b5}]+/i,utf
1629    \x{00b5}\x{039c}\x{03bc}
1630
1631/[z\x{039c}]+/i,utf
1632    \x{00b5}\x{039c}\x{03bc}
1633
1634/[z\x{03bc}]+/i,utf
1635    \x{00b5}\x{039c}\x{03bc}
1636
1637/[z\x{00c5}]+/i,utf
1638    \x{00c5}\x{00e5}\x{212b}
1639
1640/[z\x{00e5}]+/i,utf
1641    \x{00c5}\x{00e5}\x{212b}
1642
1643/[z\x{212b}]+/i,utf
1644    \x{00c5}\x{00e5}\x{212b}
1645
1646/[z\x{01c4}]+/i,utf
1647    \x{01c4}\x{01c5}\x{01c6}
1648
1649/[z\x{01c5}]+/i,utf
1650    \x{01c4}\x{01c5}\x{01c6}
1651
1652/[z\x{01c6}]+/i,utf
1653    \x{01c4}\x{01c5}\x{01c6}
1654
1655/[z\x{01c7}]+/i,utf
1656    \x{01c7}\x{01c8}\x{01c9}
1657
1658/[z\x{01c8}]+/i,utf
1659    \x{01c7}\x{01c8}\x{01c9}
1660
1661/[z\x{01c9}]+/i,utf
1662    \x{01c7}\x{01c8}\x{01c9}
1663
1664/[z\x{01ca}]+/i,utf
1665    \x{01ca}\x{01cb}\x{01cc}
1666
1667/[z\x{01cb}]+/i,utf
1668    \x{01ca}\x{01cb}\x{01cc}
1669
1670/[z\x{01cc}]+/i,utf
1671    \x{01ca}\x{01cb}\x{01cc}
1672
1673/[z\x{01f1}]+/i,utf
1674    \x{01f1}\x{01f2}\x{01f3}
1675
1676/[z\x{01f2}]+/i,utf
1677    \x{01f1}\x{01f2}\x{01f3}
1678
1679/[z\x{01f3}]+/i,utf
1680    \x{01f1}\x{01f2}\x{01f3}
1681
1682/[z\x{0345}]+/i,utf
1683    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1684
1685/[z\x{0399}]+/i,utf
1686    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1687
1688/[z\x{03b9}]+/i,utf
1689    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1690
1691/[z\x{1fbe}]+/i,utf
1692    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1693
1694/[z\x{0392}]+/i,utf
1695    \x{0392}\x{03b2}\x{03d0}
1696
1697/[z\x{03b2}]+/i,utf
1698    \x{0392}\x{03b2}\x{03d0}
1699
1700/[z\x{03d0}]+/i,utf
1701    \x{0392}\x{03b2}\x{03d0}
1702
1703/[z\x{0395}]+/i,utf
1704    \x{0395}\x{03b5}\x{03f5}
1705
1706/[z\x{03b5}]+/i,utf
1707    \x{0395}\x{03b5}\x{03f5}
1708
1709/[z\x{03f5}]+/i,utf
1710    \x{0395}\x{03b5}\x{03f5}
1711
1712/[z\x{0398}]+/i,utf
1713    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1714
1715/[z\x{03b8}]+/i,utf
1716    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1717
1718/[z\x{03d1}]+/i,utf
1719    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1720
1721/[z\x{03f4}]+/i,utf
1722    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1723
1724/[z\x{039a}]+/i,utf
1725    \x{039a}\x{03ba}\x{03f0}
1726
1727/[z\x{03ba}]+/i,utf
1728    \x{039a}\x{03ba}\x{03f0}
1729
1730/[z\x{03f0}]+/i,utf
1731    \x{039a}\x{03ba}\x{03f0}
1732
1733/[z\x{03a0}]+/i,utf
1734    \x{03a0}\x{03c0}\x{03d6}
1735
1736/[z\x{03c0}]+/i,utf
1737    \x{03a0}\x{03c0}\x{03d6}
1738
1739/[z\x{03d6}]+/i,utf
1740    \x{03a0}\x{03c0}\x{03d6}
1741
1742/[z\x{03a1}]+/i,utf
1743    \x{03a1}\x{03c1}\x{03f1}
1744
1745/[z\x{03c1}]+/i,utf
1746    \x{03a1}\x{03c1}\x{03f1}
1747
1748/[z\x{03f1}]+/i,utf
1749    \x{03a1}\x{03c1}\x{03f1}
1750
1751/[z\x{03a3}]+/i,utf
1752    \x{03A3}\x{03C2}\x{03C3}
1753
1754/[z\x{03c2}]+/i,utf
1755    \x{03A3}\x{03C2}\x{03C3}
1756
1757/[z\x{03c3}]+/i,utf
1758    \x{03A3}\x{03C2}\x{03C3}
1759
1760/[z\x{03a6}]+/i,utf
1761    \x{03a6}\x{03c6}\x{03d5}
1762
1763/[z\x{03c6}]+/i,utf
1764    \x{03a6}\x{03c6}\x{03d5}
1765
1766/[z\x{03d5}]+/i,utf
1767    \x{03a6}\x{03c6}\x{03d5}
1768
1769/[z\x{03c9}]+/i,utf
1770    \x{03c9}\x{03a9}\x{2126}
1771
1772/[z\x{03a9}]+/i,utf
1773    \x{03c9}\x{03a9}\x{2126}
1774
1775/[z\x{2126}]+/i,utf
1776    \x{03c9}\x{03a9}\x{2126}
1777
1778/[z\x{1e60}]+/i,utf
1779    \x{1e60}\x{1e61}\x{1e9b}
1780
1781/[z\x{1e61}]+/i,utf
1782    \x{1e60}\x{1e61}\x{1e9b}
1783
1784/[z\x{1e9b}]+/i,utf
1785    \x{1e60}\x{1e61}\x{1e9b}
1786
1787# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
1788
1789/[z\x{004b}]+/i,utf
1790    \x{004b}\x{006b}\x{212a}
1791
1792/[z\x{006b}]+/i,utf
1793    \x{004b}\x{006b}\x{212a}
1794
1795/[z\x{212a}]+/i,utf
1796    \x{004b}\x{006b}\x{212a}
1797
1798/[z\x{0053}]+/i,utf
1799    \x{0053}\x{0073}\x{017f}
1800
1801/[z\x{0073}]+/i,utf
1802    \x{0053}\x{0073}\x{017f}
1803
1804/[z\x{017f}]+/i,utf
1805    \x{0053}\x{0073}\x{017f}
1806
1807# --------------------------------------
1808
1809/(ΣΆΜΟΣ) \1/i,utf
1810    ΣΆΜΟΣ ΣΆΜΟΣ
1811    ΣΆΜΟΣ σάμος
1812    σάμος σάμος
1813    σάμος σάμοσ
1814    σάμος ΣΆΜΟΣ
1815
1816/(σάμος) \1/i,utf
1817    ΣΆΜΟΣ ΣΆΜΟΣ
1818    ΣΆΜΟΣ σάμος
1819    σάμος σάμος
1820    σάμος σάμοσ
1821    σάμος ΣΆΜΟΣ
1822
1823/(ΣΆΜΟΣ) \1*/i,utf
1824    ΣΆΜΟΣ\x20
1825    ΣΆΜΟΣ ΣΆΜΟΣσάμοςσάμος
1826
1827# Perl matches these
1828
1829/\x{00b5}+/i,utf
1830    \x{00b5}\x{039c}\x{03bc}
1831
1832/\x{039c}+/i,utf
1833    \x{00b5}\x{039c}\x{03bc}
1834
1835/\x{03bc}+/i,utf
1836    \x{00b5}\x{039c}\x{03bc}
1837
1838
1839/\x{00c5}+/i,utf
1840    \x{00c5}\x{00e5}\x{212b}
1841
1842/\x{00e5}+/i,utf
1843    \x{00c5}\x{00e5}\x{212b}
1844
1845/\x{212b}+/i,utf
1846    \x{00c5}\x{00e5}\x{212b}
1847
1848
1849/\x{01c4}+/i,utf
1850    \x{01c4}\x{01c5}\x{01c6}
1851
1852/\x{01c5}+/i,utf
1853    \x{01c4}\x{01c5}\x{01c6}
1854
1855/\x{01c6}+/i,utf
1856    \x{01c4}\x{01c5}\x{01c6}
1857
1858
1859/\x{01c7}+/i,utf
1860    \x{01c7}\x{01c8}\x{01c9}
1861
1862/\x{01c8}+/i,utf
1863    \x{01c7}\x{01c8}\x{01c9}
1864
1865/\x{01c9}+/i,utf
1866    \x{01c7}\x{01c8}\x{01c9}
1867
1868
1869/\x{01ca}+/i,utf
1870    \x{01ca}\x{01cb}\x{01cc}
1871
1872/\x{01cb}+/i,utf
1873    \x{01ca}\x{01cb}\x{01cc}
1874
1875/\x{01cc}+/i,utf
1876    \x{01ca}\x{01cb}\x{01cc}
1877
1878
1879/\x{01f1}+/i,utf
1880    \x{01f1}\x{01f2}\x{01f3}
1881
1882/\x{01f2}+/i,utf
1883    \x{01f1}\x{01f2}\x{01f3}
1884
1885/\x{01f3}+/i,utf
1886    \x{01f1}\x{01f2}\x{01f3}
1887
1888
1889/\x{0345}+/i,utf
1890    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1891
1892/\x{0399}+/i,utf
1893    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1894
1895/\x{03b9}+/i,utf
1896    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1897
1898/\x{1fbe}+/i,utf
1899    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1900
1901
1902/\x{0392}+/i,utf
1903    \x{0392}\x{03b2}\x{03d0}
1904
1905/\x{03b2}+/i,utf
1906    \x{0392}\x{03b2}\x{03d0}
1907
1908/\x{03d0}+/i,utf
1909    \x{0392}\x{03b2}\x{03d0}
1910
1911
1912/\x{0395}+/i,utf
1913    \x{0395}\x{03b5}\x{03f5}
1914
1915/\x{03b5}+/i,utf
1916    \x{0395}\x{03b5}\x{03f5}
1917
1918/\x{03f5}+/i,utf
1919    \x{0395}\x{03b5}\x{03f5}
1920
1921
1922/\x{0398}+/i,utf
1923    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1924
1925/\x{03b8}+/i,utf
1926    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1927
1928/\x{03d1}+/i,utf
1929    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1930
1931/\x{03f4}+/i,utf
1932    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1933
1934
1935/\x{039a}+/i,utf
1936    \x{039a}\x{03ba}\x{03f0}
1937
1938/\x{03ba}+/i,utf
1939    \x{039a}\x{03ba}\x{03f0}
1940
1941/\x{03f0}+/i,utf
1942    \x{039a}\x{03ba}\x{03f0}
1943
1944
1945/\x{03a0}+/i,utf
1946    \x{03a0}\x{03c0}\x{03d6}
1947
1948/\x{03c0}+/i,utf
1949    \x{03a0}\x{03c0}\x{03d6}
1950
1951/\x{03d6}+/i,utf
1952    \x{03a0}\x{03c0}\x{03d6}
1953
1954
1955/\x{03a1}+/i,utf
1956    \x{03a1}\x{03c1}\x{03f1}
1957
1958/\x{03c1}+/i,utf
1959    \x{03a1}\x{03c1}\x{03f1}
1960
1961/\x{03f1}+/i,utf
1962    \x{03a1}\x{03c1}\x{03f1}
1963
1964
1965/\x{03a3}+/i,utf
1966    \x{03A3}\x{03C2}\x{03C3}
1967
1968/\x{03c2}+/i,utf
1969    \x{03A3}\x{03C2}\x{03C3}
1970
1971/\x{03c3}+/i,utf
1972    \x{03A3}\x{03C2}\x{03C3}
1973
1974
1975/\x{03a6}+/i,utf
1976    \x{03a6}\x{03c6}\x{03d5}
1977
1978/\x{03c6}+/i,utf
1979    \x{03a6}\x{03c6}\x{03d5}
1980
1981/\x{03d5}+/i,utf
1982    \x{03a6}\x{03c6}\x{03d5}
1983
1984
1985/\x{03c9}+/i,utf
1986    \x{03c9}\x{03a9}\x{2126}
1987
1988/\x{03a9}+/i,utf
1989    \x{03c9}\x{03a9}\x{2126}
1990
1991/\x{2126}+/i,utf
1992    \x{03c9}\x{03a9}\x{2126}
1993
1994
1995/\x{1e60}+/i,utf
1996    \x{1e60}\x{1e61}\x{1e9b}
1997
1998/\x{1e61}+/i,utf
1999    \x{1e60}\x{1e61}\x{1e9b}
2000
2001/\x{1e9b}+/i,utf
2002    \x{1e60}\x{1e61}\x{1e9b}
2003
2004
2005/\x{1e9e}+/i,utf
2006    \x{1e9e}\x{00df}
2007
2008/\x{00df}+/i,utf
2009    \x{1e9e}\x{00df}
2010
2011
2012/\x{1f88}+/i,utf
2013    \x{1f88}\x{1f80}
2014
2015/\x{1f80}+/i,utf
2016    \x{1f88}\x{1f80}
2017
2018# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
2019
2020/\x{004b}+/i,utf
2021    \x{004b}\x{006b}\x{212a}
2022
2023/\x{006b}+/i,utf
2024    \x{004b}\x{006b}\x{212a}
2025
2026/\x{212a}+/i,utf
2027    \x{004b}\x{006b}\x{212a}
2028
2029
2030/\x{0053}+/i,utf
2031    \x{0053}\x{0073}\x{017f}
2032
2033/\x{0073}+/i,utf
2034    \x{0053}\x{0073}\x{017f}
2035
2036/\x{017f}+/i,utf
2037    \x{0053}\x{0073}\x{017f}
2038
2039/^\p{Any}*\d{4}/utf
2040    1234
2041\= Expect no match
2042    123
2043
2044/^\X*\w{4}/utf
2045    1234
2046\= Expect no match
2047    123
2048
2049/^A\s+Z/utf,ucp
2050    A\x{2005}Z
2051    A\x{85}\x{2005}Z
2052
2053/^A[\s]+Z/utf,ucp
2054    A\x{2005}Z
2055    A\x{85}\x{2005}Z
2056
2057/^[[:graph:]]+$/utf,ucp
2058    Letter:ABC
2059    Mark:\x{300}\x{1d172}\x{1d17b}
2060    Number:9\x{660}
2061    Punctuation:\x{66a},;
2062    Symbol:\x{6de}<>\x{fffc}
2063    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2064    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2065    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2066    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2067    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2068    \x{feff}
2069    \x{fff9}\x{fffa}\x{fffb}
2070    \x{110bd}
2071    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2072    \x{e0001}
2073    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2074\= Expect no match
2075    \x{09}
2076    \x{0a}
2077    \x{1D}
2078    \x{20}
2079    \x{85}
2080    \x{a0}
2081    \x{1680}
2082    \x{2028}
2083    \x{2029}
2084    \x{202f}
2085    \x{2065}
2086    \x{3000}
2087    \x{e0002}
2088    \x{e001f}
2089    \x{e0080}
2090
2091/^[[:print:]]+$/utf,ucp
2092    Space: \x{a0}
2093    \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
2094    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
2095    \x{202f}\x{205f}
2096    \x{3000}
2097    Letter:ABC
2098    Mark:\x{300}\x{1d172}\x{1d17b}
2099    Number:9\x{660}
2100    Punctuation:\x{66a},;
2101    Symbol:\x{6de}<>\x{fffc}
2102    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2103    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2104    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2105    \x{202f}
2106    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2107    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2108    \x{feff}
2109    \x{fff9}\x{fffa}\x{fffb}
2110    \x{110bd}
2111    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2112    \x{e0001}
2113    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2114\= Expect no match
2115    \x{09}
2116    \x{1D}
2117    \x{85}
2118    \x{2028}
2119    \x{2029}
2120    \x{2065}
2121    \x{e0002}
2122    \x{e001f}
2123    \x{e0080}
2124
2125/^[[:punct:]]+$/utf,ucp
2126    \$+<=>^`|~
2127    !\"#%&'()*,-./:;?@[\\]_{}
2128    \x{a1}\x{a7}
2129    \x{37e}
2130\= Expect no match
2131    abcde
2132
2133/^[[:^graph:]]+$/utf,ucp
2134    \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{1680}
2135    \x{2028}\x{2029}\x{202f}\x{2065}
2136    \x{3000}\x{e0002}\x{e001f}\x{e0080}
2137\= Expect no match
2138    Letter:ABC
2139    Mark:\x{300}\x{1d172}\x{1d17b}
2140    Number:9\x{660}
2141    Punctuation:\x{66a},;
2142    Symbol:\x{6de}<>\x{fffc}
2143    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2144    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2145    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2146    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2147    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2148    \x{feff}
2149    \x{fff9}\x{fffa}\x{fffb}
2150    \x{110bd}
2151    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2152    \x{e0001}
2153    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2154
2155/^[[:^print:]]+$/utf,ucp
2156    \x{09}\x{1D}\x{85}\x{2028}\x{2029}\x{2065}
2157    \x{e0002}\x{e001f}\x{e0080}
2158\= Expect no match
2159    Space: \x{a0}
2160    \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
2161    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
2162    \x{202f}\x{205f}
2163    \x{3000}
2164    Letter:ABC
2165    Mark:\x{300}\x{1d172}\x{1d17b}
2166    Number:9\x{660}
2167    Punctuation:\x{66a},;
2168    Symbol:\x{6de}<>\x{fffc}
2169    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2170    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2171    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2172    \x{202f}
2173    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2174    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2175    \x{feff}
2176    \x{fff9}\x{fffa}\x{fffb}
2177    \x{110bd}
2178    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2179    \x{e0001}
2180    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2181
2182/^[[:^punct:]]+$/utf,ucp
2183    abcde
2184\= Expect no match
2185    \$+<=>^`|~
2186    !\"#%&'()*,-./:;?@[\\]_{}
2187    \x{a1}\x{a7}
2188    \x{37e}
2189
2190/[RST]+/i,utf,ucp
2191    Ss\x{17f}
2192
2193/[R-T]+/i,utf,ucp
2194    Ss\x{17f}
2195
2196/[q-u]+/i,utf,ucp
2197    Ss\x{17f}
2198
2199/^s?c/im,utf
2200    scat
2201
2202# The next four tests are for repeated caseless back references when the
2203# code unit length of the matched text is different to that of the original
2204# group in the UTF-8 case.
2205
2206/^(\x{23a})\1*(.)/i,utf
2207    \x{23a}\x{23a}\x{23a}\x{23a}
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    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2217    \x{23a}\x{23a}\x{2c65}\x{23a}
2218
2219/^(\x{23a})\1*(....)/i,utf
2220\= Expect no match
2221    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2222    \x{23a}\x{23a}\x{2c65}\x{23a}
2223
2224/[A-`]/i,utf
2225    abcdefghijklmno
2226
2227/[\S\V\H]/utf
2228
2229/[^\p{Any}]*+x/utf
2230    x
2231
2232/[[:punct:]]/utf,ucp
2233    \x{b4}
2234
2235/[[:^ascii:]]/utf,ucp
2236    \x{100}
2237    \x{200}
2238    \x{300}
2239    \x{37e}
2240\= Expect no match
2241    aa
2242    99
2243
2244/[[:^ascii:]\w]/utf,ucp
2245    aa
2246    99
2247    gg
2248    \x{100}
2249    \x{200}
2250    \x{300}
2251    \x{37e}
2252
2253/[\w[:^ascii:]]/utf,ucp
2254    aa
2255    99
2256    gg
2257    \x{100}
2258    \x{200}
2259    \x{300}
2260    \x{37e}
2261
2262/[^[:ascii:]\W]/utf,ucp
2263    \x{100}
2264    \x{200}
2265\= Expect no match
2266    aa
2267    99
2268    gg
2269    \x{37e}
2270
2271/[^[:^ascii:]\d]/utf,ucp
2272    a
2273    ~
2274    \a
2275    \x{7f}
2276\= Expect no match
2277    0
2278    \x{389}
2279    \x{20ac}
2280
2281/(?=.*b)\pL/
2282    11bb
2283
2284/(?(?=.*b)(?=.*b)\pL|.*c)/
2285    11bb
2286
2287/^\x{123}+?$/utf,no_auto_possess
2288    \x{123}\x{123}\x{123}
2289
2290/^\x{123}+?$/i,utf,no_auto_possess
2291    \x{123}\x{122}\x{123}
2292\= Expect no match
2293    \x{123}\x{124}\x{123}
2294
2295/\N{U+1234}/utf
2296    \x{1234}
2297
2298/[\N{U+1234}]/utf
2299    \x{1234}
2300
2301# Test the full list of Unicode "Pattern White Space" characters that are to
2302# be ignored by /x. The pattern lines below may show up oddly in text editors
2303# or when listed to the screen. Note that characters such as U+2002, which are
2304# matched as space by \h and \v are *not* "Pattern White Space".
2305
2306/A…‎‏

B/x,utf
2307    AB
2308
2309/A B/x,utf
2310    A\x{2002}B
2311\= Expect no match
2312    AB
2313
2314# -------
2315
2316/[^\x{100}-\x{ffff}]*[\x80-\xff]/utf
2317    \x{99}\x{99}\x{99}
2318
2319/[^\x{100}-\x{ffff}ABC]*[\x80-\xff]/utf
2320    \x{99}\x{99}\x{99}
2321
2322/[^\x{100}-\x{ffff}]*[\x80-\xff]/i,utf
2323    \x{99}\x{99}\x{99}
2324
2325# Script run tests
2326
2327/^(*script_run:.{4})/utf
2328    abcd                               Latin x4
2329    \x{2e80}\x{2fa1d}\x{3041}\x{30a1}  Han Han Hiragana Katakana
2330    \x{3041}\x{30a1}\x{3007}\x{3007}   Hiragana Katakana Han Han
2331    \x{30a1}\x{3041}\x{3007}\x{3007}   Katakana Hiragana Han Han
2332    \x{1100}\x{2e80}\x{2e80}\x{1101}   Hangul Han Han Hangul
2333    \x{2e80}\x{3105}\x{2e80}\x{3105}   Han Bopomofo Han Bopomofo
2334    \x{02ea}\x{2e80}\x{2e80}\x{3105}   Bopomofo-Sk Han Han Bopomofo
2335    \x{3105}\x{2e80}\x{2e80}\x{3105}   Bopomofo Han Han Bopomofo
2336    \x{0300}cd!                        Inherited Latin Latin Common
2337    \x{0391}12\x{03a9}                 Greek Common-digits Greek
2338    \x{0400}12\x{fe2f}                 Cyrillic Common-digits Cyrillic
2339    \x{0531}12\x{fb17}                 Armenian Common-digits Armenian
2340    \x{0591}12\x{fb4f}                 Hebrew Common-digits Hebrew
2341    \x{0600}12\x{1eef1}                Arabic Common-digits Arabic
2342    \x{0600}\x{0660}\x{0669}\x{1eef1}  Arabic Arabic-digits Arabic
2343    \x{0700}12\x{086a}                 Syriac Common-digits Syriac
2344    \x{1200}12\x{ab2e}                 Ethiopic Common-digits Ethiopic
2345    \x{1680}12\x{169c}                 Ogham Common-digits Ogham
2346    \x{3041}12\x{3041}                 Hiragana Common-digits Hiragana
2347    \x{0980}\x{09e6}\x{09e7}\x{0993}   Bengali Bengali-digits Bengali
2348    !cde                               Common Latin Latin Latin
2349    A..B                               Latin Common Common Latin
2350    0abc                               Ascii-digit Latin Latin Latin
2351    1\x{0700}\x{0700}\x{0700}          Ascii-digit Syriac x 3
2352    \x{1A80}\x{1A80}\x{1a40}\x{1a41}   Tai Tham Hora digits, letters
2353\= Expect no match
2354    a\x{370}bcd                        Latin Greek Latin Latin
2355    \x{1100}\x{02ea}\x{02ea}\x{02ea}   Hangul Bopomofo x3
2356    \x{02ea}\x{02ea}\x{02ea}\x{1100}   Bopomofo x3 Hangul
2357    \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
2358    \x{0391}\x{09e6}\x{09e7}\x{03a9}   Greek Bengali digits Greek
2359    \x{0600}7\x{0669}\x{1eef1}         Arabic ascii-digit Arabic-digit Arabic
2360    \x{0600}\x{0669}7\x{1eef1}         Arabic Arabic-digit ascii-digit Arabic
2361    A5\x{ff19}B                        Latin Common-ascii/notascii-digits Latin
2362    \x{0300}cd\x{0391}                 Inherited Latin Latin Greek
2363    !cd\x{0391}                        Common Latin Latin Greek
2364    \x{1A80}\x{1A90}\x{1a40}\x{1a41}   Tai Tham Hora digit, Tham digit, letters
2365    A\x{1d7ce}\x{1d7ff}B               Common fancy-common-2-sets-digits Common
2366    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2367
2368/^(*sr:.{4}|..)/utf
2369    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2370
2371/^(*atomic_script_run:.{4}|..)/utf
2372\= Expect no match
2373    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2374
2375/^(*asr:.*)/utf
2376\= Expect no match
2377    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2378
2379/^(?>(*sr:.*))/utf
2380    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2381
2382/^(*sr:.*)/utf
2383    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2384    \x{10fffd}\x{10fffd}\x{10fffd}     Private use (Unknown)
2385
2386/^(*sr:\x{2e80}*)/utf
2387    \x{2e80}\x{2e80}\x{3105}           Han Han Bopomofo
2388
2389/^(*sr:\x{2e80}*)\x{2e80}/utf
2390    \x{2e80}\x{2e80}\x{3105}           Han Han Bopomofo
2391
2392/^(*sr:.*)Test/utf
2393    Test script run on an empty string
2394
2395/^(*sr:(.{2})){2}/utf
2396    \x{0600}7\x{0669}\x{1eef1}         Arabic ascii-digit Arabic-digit Arabic
2397    \x{1A80}\x{1A80}\x{1a40}\x{1a41}   Tai Tham Hora digits, letters
2398    \x{1A80}\x{1a40}\x{1A90}\x{1a41}   Tai Tham Hora digit, letter, Tham digit, letter
2399\= Expect no match
2400    \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
2401
2402/^(*sr:\S*)/utf
2403    \x{1cf4}\x{20f0}\x{900}\x{11305}   [Dev,Gran,Kan] [Dev,Gran,Lat] Dev Gran
2404    \x{1cf4}\x{20f0}\x{11305}\x{900}   [Dev,Gran,Kan] [Dev,Gran,Lat] Gran Dev
2405    \x{1cf4}\x{20f0}\x{900}ABC         [Dev,Gran,Kan] [Dev,Gran,Lat] Dev Lat
2406    \x{1cf4}\x{20f0}ABC                [Dev,Gran,Kan] [Dev,Gran,Lat] Lat
2407    \x{20f0}ABC                        [Dev,Gran,Lat] Lat
2408    XYZ\x{20f0}ABC                     Lat [Dev,Gran,Lat] Lat
2409    \x{a36}\x{a33}\x{900}              [Dev,...] [Dev,...] Dev
2410    \x{3001}\x{2e80}\x{3041}\x{30a1}   [Bopo, Han, etc] Han Hira Kata
2411    \x{3001}\x{30a1}\x{2e80}\x{3041}   [Bopo, Han, etc] Kata Han Hira
2412    \x{3001}\x{3105}\x{2e80}\x{1101}   [Bopo, Han, etc] Bopomofo Han Hangul
2413    \x{3105}\x{3001}\x{2e80}\x{1101}   Bopomofo [Bopo, Han, etc] Han Hangul
2414    \x{3031}\x{3041}\x{30a1}\x{2e80}   [Hira Kata] Hira Kata Han
2415    \x{060c}\x{06d4}\x{0600}\x{10d00}\x{0700}  [Arab Rohg Syrc Thaa] [Arab Rohg] Arab Rohg Syrc
2416    \x{060c}\x{06d4}\x{0700}\x{0600}\x{10d00}  [Arab Rohg Syrc Thaa] [Arab Rohg] Syrc Arab Rohg
2417    \x{2e80}\x{3041}\x{3001}\x{3031}\x{2e80}   Han Hira [Bopo, Han, etc] [Hira Kata] Han
2418
2419/(?<!)(*sr:)/
2420
2421/(?<!X(*sr:B)C)/
2422
2423/(?<=abc(?=X(*sr:BCY)Z)XBCYZ)./
2424    abcXBCYZ!
2425
2426/(?<=abc(?=X(*sr:BXY)CCC)XBXYCCC)./
2427   abcXBXYCCC!
2428
2429/^(*sr:\S*)/utf
2430    \x{10d00}\x{10d00}\x{06d4}     Rohingya Rohingya Arabic-full-stop
2431    \x{06d4}\x{10d00}\x{10d00}     Arabic-full-stop Rohingya Rohingya
2432    \x{10d00}\x{10d00}\x{0363}     Rohingya Rohingya Inherited-extend-Latin
2433    \x{0363}\x{10d00}\x{10d00}     Inherited-extend-Latin Rohingya Rohingya
2434    AB\x{0363}                     Latin Latin Inherited-extend-Latin
2435    \x{0363}AB                     Inherited-extend-Latin Latin Latin
2436    AB\x{1cf7}                     Latin Latin Common-extended-Beng
2437    \x{1cf7}AB                     Common-extend-Beng Latin Latin
2438    \x{1cf7}\x{0993}               Common-extend-Beng Bengali
2439    A\x{1abe}BC                    Test enclosing mark
2440    \x{0370}\x{1abe}\x{0371}       Which can occur with any script (Greek here)
2441    \x{3001}\x{adf9}\x{3001}       [.. Hangul ..] Hangul [.. Hangul ..]
2442    \x{3400}\x{3001}XXX            Han [Han etc.]
2443    \x{3400}\x{1cd5}               Han [Bengali Devanagari]
2444    \x{ac01}\x{3400}               Hangul [.. Hangul ..]
2445    \x{ac01}\x{1cd5}               Hangul [Bengali Devanagari]
2446    \x{102e0}\x{06d4}\x{1ee4d}     [Arabic Coptic] [Arab Rohingya] Arabic
2447    \x{102e0}\x{06d4}\x{2cc9}      [Arabic Coptic] [Arab Rohingya] Coptic
2448    \x{102e0}\x{06d4}\x{10d30}     [Arabic Coptic] [Arab Rohingya] Rohingya
2449
2450# Test loop breaking for empty string match
2451
2452/^(*sr:A|)*BCD/utf
2453    AABCD
2454    ABCD
2455    BCD
2456
2457# The use of (*ACCEPT) breaks script run checking
2458
2459/^(*sr:.*(*ACCEPT)ZZ)/utf
2460    \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
2461
2462# -------
2463
2464# Test group names containing non-ASCII letters and digits
2465
2466/(?'ABáC'...)\g{ABáC}/utf
2467    abcabcdefg
2468
2469/(?'XʰABC'...)/utf
2470    xyzpq
2471
2472/(?'XאABC'...)/utf
2473    12345
2474
2475/(?'XᾈABC'...)/utf
2476    %^&*(...
2477
2478/(?'��ABC'...)/utf
2479    abcde
2480
2481/^(?'אABC'...)(?&אABC)(?P=אABC)/utf
2482    123123123456
2483
2484/^(?'אABC'...)(?&אABC)/utf
2485    123123123456
2486
2487/\X*/
2488    \xF3aaa\xE4\xEA\xEB\xFEa
2489
2490/Я/i,utf
2491    \x{42f}
2492    \x{44f}
2493
2494/(?=Я)/i,utf
2495    \x{42f}
2496    \x{44f}
2497
2498# End of testinput4
2499