xref: /aosp_15_r20/external/pcre/testdata/testinput4 (revision 22dc650d8ae982c6770746019a6f94af92b0f024)
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{Arabic}]/utf
1142    \x{06e9}
1143    \x{060b}
1144\= Expect no match
1145    X\x{06e9}
1146
1147/^\P{Katakana}+/utf
1148    \x{3105}
1149\= Expect no match
1150    \x{30ff}
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{katakana}/utf
1434    \x{30a1}
1435    \x{3001}
1436
1437/\p{scx:katakana}/utf
1438    \x{30a1}
1439    \x{3001}
1440
1441/\p{script extensions:katakana}/utf
1442    \x{30a1}
1443    \x{3001}
1444
1445/\p{sc:katakana}/utf
1446    \x{30a1}
1447\= Expect no match
1448    \x{3001}
1449
1450/\p{script:katakana}/utf
1451    \x{30a1}
1452\= Expect no match
1453    \x{3001}
1454
1455/\p{sc:katakana}{3,}/utf
1456    \x{30a1}\x{30fa}\x{32d0}\x{1b122}\x{ff66}\x{3001}ABC
1457
1458/\p{sc:katakana}{3,}?/utf
1459    \x{30a1}\x{30fa}\x{32d0}\x{1b122}\x{ff66}\x{3001}ABC
1460
1461/\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
1462    \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
1463
1464/\x{a77d}\x{1d79}/i,utf
1465    \x{a77d}\x{1d79}
1466    \x{1d79}\x{a77d}
1467
1468/\x{a77d}\x{1d79}/utf
1469    \x{a77d}\x{1d79}
1470\= Expect no match
1471    \x{1d79}\x{a77d}
1472
1473/(A)\1/i,utf
1474    AA
1475    Aa
1476    aa
1477    aA
1478
1479/(\x{10a})\1/i,utf
1480    \x{10a}\x{10a}
1481    \x{10a}\x{10b}
1482    \x{10b}\x{10b}
1483    \x{10b}\x{10a}
1484
1485# The next two tests are for property support in non-UTF mode
1486
1487/(?:\p{Lu}|\x20)+/
1488    \x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
1489
1490/[\p{Lu}\x20]+/
1491    \x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
1492
1493/\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
1494    \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}
1495
1496/^\w+/utf,ucp
1497    Az_\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
1498
1499/^[[:xdigit:]]*/utf,ucp
1500    1a\x{660}\x{bef}\x{16ee}
1501
1502/^\d+/utf,ucp
1503    1\x{660}\x{bef}\x{16ee}
1504
1505/^[[:digit:]]+/utf,ucp
1506    1\x{660}\x{bef}\x{16ee}
1507
1508/^>\s+/utf,ucp
1509    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
1510
1511/^>\pZ+/utf,ucp
1512    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
1513
1514/^>[[:space:]]*/utf,ucp
1515    >\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
1516
1517/^>[[:blank:]]*/utf,ucp
1518    >\x{20}\x{a0}\x{1680}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
1519
1520/^[[:alpha:]]*/utf,ucp
1521    Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}
1522
1523/^[[:alnum:]]*/utf,ucp
1524    Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
1525
1526/^[[:cntrl:]]*/utf,ucp
1527    \x{0}\x{09}\x{1f}\x{7f}\x{9f}
1528
1529/^[[:graph:]]*/utf,ucp
1530    A\x{a1}\x{a0}
1531
1532/^[[:print:]]*/utf,ucp
1533    A z\x{a0}\x{a1}
1534
1535/^[[:punct:]]*/utf,ucp
1536    .+\x{a1}\x{a0}
1537
1538/\p{Zs}*?\R/
1539\= Expect no match
1540    a\xFCb
1541
1542/\p{Zs}*\R/
1543\= Expect no match
1544    a\xFCb
1545
1546/ⱥ/i,utf
15471548    Ⱥx
1549    Ⱥ
1550
1551/[ⱥ]/i,utf
15521553    Ⱥx
1554    Ⱥ
1555
1556/Ⱥ/i,utf
1557    Ⱥ
15581559
1560# These are tests for extended grapheme clusters
1561
1562/^\X/utf,aftertext
1563    G\x{34e}\x{34e}X
1564    \x{34e}\x{34e}X
1565    \x04X
1566    \x{1100}X
1567    \x{1100}\x{34e}X
1568    \x{1b04}\x{1b04}X
1569    *These match up to the roman letters
1570    \x{1111}\x{1111}L,L
1571    \x{1111}\x{1111}\x{1169}L,L,V
1572    \x{1111}\x{ae4c}L, LV
1573    \x{1111}\x{ad89}L, LVT
1574    \x{1111}\x{ae4c}\x{1169}L, LV, V
1575    \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
1576    \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
1577    \x{1111}\x{ad89}\x{11fe}L, LVT, T
1578    \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
1579    \x{ad89}\x{11fe}\x{11fe}LVT, T, T
1580    *These match just the first codepoint (invalid sequence)
1581    \x{1111}\x{11fe}L, T
1582    \x{ae4c}\x{1111}LV, L
1583    \x{ae4c}\x{ae4c}LV, LV
1584    \x{ae4c}\x{ad89}LV, LVT
1585    \x{1169}\x{1111}V, L
1586    \x{1169}\x{ae4c}V, LV
1587    \x{1169}\x{ad89}V, LVT
1588    \x{ad89}\x{1111}LVT, L
1589    \x{ad89}\x{1169}LVT, V
1590    \x{ad89}\x{ae4c}LVT, LV
1591    \x{ad89}\x{ad89}LVT, LVT
1592    \x{11fe}\x{1111}T, L
1593    \x{11fe}\x{1169}T, V
1594    \x{11fe}\x{ae4c}T, LV
1595    \x{11fe}\x{ad89}T, LVT
1596    *Test extend and spacing mark
1597    \x{1111}\x{ae4c}\x{0711}L, LV, extend
1598    \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
1599    \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
1600    *Test CR, LF, and control
1601    \x0d\x{0711}CR, extend
1602    \x0d\x{1b04}CR, spacingmark
1603    \x0a\x{0711}LF, extend
1604    \x0a\x{1b04}LF, spacingmark
1605    \x0b\x{0711}Control, extend
1606    \x09\x{1b04}Control, spacingmark
1607    *Test Extended Pictographic after bug fix
1608    \x{261d}\x{261d}B              Extended_Pictographic Extended_Pictographic
1609    \x{261D}\x{1F3FB}\x{261d}B     Extended_Pictographic Extend E-P
1610    \x{261D}\x{1F3FB}\x{200d}\x{261d}B     Extended_Pictographic Extend ZWJ E-P
1611    \x{1f3f3}\x{fe0f}\x{200d}\x{1f308}\x{1f3f4}\x{200d}\x{2620}\x{fe0f}\x{1f3f3}\x{fe0f}\x{200d}\x{1f308}\x{1f3f4}\x{200d}\x{2620}\x{fe0f}
1612    A\x{200d}\x{1f308}B
1613    A\x{200d}B                     A ZWJ
1614    \x{261D}\x{1F3FB}B             Extended_Pictographic Extend
1615    \x{1F1E6}\x{1F1E7}B            RegionalIndicator RegionalIndicator
1616    *There are no Prepend characters, so we can't test Prepend, CR
1617
1618/^(?>\X{2})X/utf,aftertext
1619    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1620
1621/^\X{2,4}X/utf,aftertext
1622    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1623    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1624    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1625
1626/^\X{2,4}?X/utf,aftertext
1627    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1628    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1629    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1630
1631/\X*Z/utf,no_start_optimize
1632\= Expect no match
1633    A\x{300}
1634
1635/\X*(.)/utf,no_start_optimize
1636    A\x{1111}\x{ae4c}\x{1169}
1637
1638# --------------------------------------------
1639
1640/\x{1e9e}+/i,utf
1641    \x{1e9e}\x{00df}
1642
1643/[z\x{1e9e}]+/i,utf
1644    \x{1e9e}\x{00df}
1645
1646/\x{00df}+/i,utf
1647    \x{1e9e}\x{00df}
1648
1649/[z\x{00df}]+/i,utf
1650    \x{1e9e}\x{00df}
1651
1652/\x{1f88}+/i,utf
1653    \x{1f88}\x{1f80}
1654
1655/[z\x{1f88}]+/i,utf
1656    \x{1f88}\x{1f80}
1657
1658# Check a reference with more than one other case
1659
1660/^(\x{00b5})\1{2}$/i,utf
1661    \x{00b5}\x{039c}\x{03bc}
1662
1663# Characters with more than one other case; test in classes
1664
1665/[z\x{00b5}]+/i,utf
1666    \x{00b5}\x{039c}\x{03bc}
1667
1668/[z\x{039c}]+/i,utf
1669    \x{00b5}\x{039c}\x{03bc}
1670
1671/[z\x{03bc}]+/i,utf
1672    \x{00b5}\x{039c}\x{03bc}
1673
1674/[z\x{00c5}]+/i,utf
1675    \x{00c5}\x{00e5}\x{212b}
1676
1677/[z\x{00e5}]+/i,utf
1678    \x{00c5}\x{00e5}\x{212b}
1679
1680/[z\x{212b}]+/i,utf
1681    \x{00c5}\x{00e5}\x{212b}
1682
1683/[z\x{01c4}]+/i,utf
1684    \x{01c4}\x{01c5}\x{01c6}
1685
1686/[z\x{01c5}]+/i,utf
1687    \x{01c4}\x{01c5}\x{01c6}
1688
1689/[z\x{01c6}]+/i,utf
1690    \x{01c4}\x{01c5}\x{01c6}
1691
1692/[z\x{01c7}]+/i,utf
1693    \x{01c7}\x{01c8}\x{01c9}
1694
1695/[z\x{01c8}]+/i,utf
1696    \x{01c7}\x{01c8}\x{01c9}
1697
1698/[z\x{01c9}]+/i,utf
1699    \x{01c7}\x{01c8}\x{01c9}
1700
1701/[z\x{01ca}]+/i,utf
1702    \x{01ca}\x{01cb}\x{01cc}
1703
1704/[z\x{01cb}]+/i,utf
1705    \x{01ca}\x{01cb}\x{01cc}
1706
1707/[z\x{01cc}]+/i,utf
1708    \x{01ca}\x{01cb}\x{01cc}
1709
1710/[z\x{01f1}]+/i,utf
1711    \x{01f1}\x{01f2}\x{01f3}
1712
1713/[z\x{01f2}]+/i,utf
1714    \x{01f1}\x{01f2}\x{01f3}
1715
1716/[z\x{01f3}]+/i,utf
1717    \x{01f1}\x{01f2}\x{01f3}
1718
1719/[z\x{0345}]+/i,utf
1720    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1721
1722/[z\x{0399}]+/i,utf
1723    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1724
1725/[z\x{03b9}]+/i,utf
1726    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1727
1728/[z\x{1fbe}]+/i,utf
1729    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1730
1731/[z\x{0392}]+/i,utf
1732    \x{0392}\x{03b2}\x{03d0}
1733
1734/[z\x{03b2}]+/i,utf
1735    \x{0392}\x{03b2}\x{03d0}
1736
1737/[z\x{03d0}]+/i,utf
1738    \x{0392}\x{03b2}\x{03d0}
1739
1740/[z\x{0395}]+/i,utf
1741    \x{0395}\x{03b5}\x{03f5}
1742
1743/[z\x{03b5}]+/i,utf
1744    \x{0395}\x{03b5}\x{03f5}
1745
1746/[z\x{03f5}]+/i,utf
1747    \x{0395}\x{03b5}\x{03f5}
1748
1749/[z\x{0398}]+/i,utf
1750    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1751
1752/[z\x{03b8}]+/i,utf
1753    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1754
1755/[z\x{03d1}]+/i,utf
1756    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1757
1758/[z\x{03f4}]+/i,utf
1759    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1760
1761/[z\x{039a}]+/i,utf
1762    \x{039a}\x{03ba}\x{03f0}
1763
1764/[z\x{03ba}]+/i,utf
1765    \x{039a}\x{03ba}\x{03f0}
1766
1767/[z\x{03f0}]+/i,utf
1768    \x{039a}\x{03ba}\x{03f0}
1769
1770/[z\x{03a0}]+/i,utf
1771    \x{03a0}\x{03c0}\x{03d6}
1772
1773/[z\x{03c0}]+/i,utf
1774    \x{03a0}\x{03c0}\x{03d6}
1775
1776/[z\x{03d6}]+/i,utf
1777    \x{03a0}\x{03c0}\x{03d6}
1778
1779/[z\x{03a1}]+/i,utf
1780    \x{03a1}\x{03c1}\x{03f1}
1781
1782/[z\x{03c1}]+/i,utf
1783    \x{03a1}\x{03c1}\x{03f1}
1784
1785/[z\x{03f1}]+/i,utf
1786    \x{03a1}\x{03c1}\x{03f1}
1787
1788/[z\x{03a3}]+/i,utf
1789    \x{03A3}\x{03C2}\x{03C3}
1790
1791/[z\x{03c2}]+/i,utf
1792    \x{03A3}\x{03C2}\x{03C3}
1793
1794/[z\x{03c3}]+/i,utf
1795    \x{03A3}\x{03C2}\x{03C3}
1796
1797/[z\x{03a6}]+/i,utf
1798    \x{03a6}\x{03c6}\x{03d5}
1799
1800/[z\x{03c6}]+/i,utf
1801    \x{03a6}\x{03c6}\x{03d5}
1802
1803/[z\x{03d5}]+/i,utf
1804    \x{03a6}\x{03c6}\x{03d5}
1805
1806/[z\x{03c9}]+/i,utf
1807    \x{03c9}\x{03a9}\x{2126}
1808
1809/[z\x{03a9}]+/i,utf
1810    \x{03c9}\x{03a9}\x{2126}
1811
1812/[z\x{2126}]+/i,utf
1813    \x{03c9}\x{03a9}\x{2126}
1814
1815/[z\x{1e60}]+/i,utf
1816    \x{1e60}\x{1e61}\x{1e9b}
1817
1818/[z\x{1e61}]+/i,utf
1819    \x{1e60}\x{1e61}\x{1e9b}
1820
1821/[z\x{1e9b}]+/i,utf
1822    \x{1e60}\x{1e61}\x{1e9b}
1823
1824# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
1825
1826/[z\x{004b}]+/i,utf
1827    \x{004b}\x{006b}\x{212a}
1828
1829/[z\x{006b}]+/i,utf
1830    \x{004b}\x{006b}\x{212a}
1831
1832/[z\x{212a}]+/i,utf
1833    \x{004b}\x{006b}\x{212a}
1834
1835/[z\x{0053}]+/i,utf
1836    \x{0053}\x{0073}\x{017f}
1837
1838/[z\x{0073}]+/i,utf
1839    \x{0053}\x{0073}\x{017f}
1840
1841/[z\x{017f}]+/i,utf
1842    \x{0053}\x{0073}\x{017f}
1843
1844# --------------------------------------
1845
1846/(ΣΆΜΟΣ) \1/i,utf
1847    ΣΆΜΟΣ ΣΆΜΟΣ
1848    ΣΆΜΟΣ σάμος
1849    σάμος σάμος
1850    σάμος σάμοσ
1851    σάμος ΣΆΜΟΣ
1852
1853/(σάμος) \1/i,utf
1854    ΣΆΜΟΣ ΣΆΜΟΣ
1855    ΣΆΜΟΣ σάμος
1856    σάμος σάμος
1857    σάμος σάμοσ
1858    σάμος ΣΆΜΟΣ
1859
1860/(ΣΆΜΟΣ) \1*/i,utf
1861    ΣΆΜΟΣ\x20
1862    ΣΆΜΟΣ ΣΆΜΟΣσάμοςσάμος
1863
1864# Perl matches these
1865
1866/\x{00b5}+/i,utf
1867    \x{00b5}\x{039c}\x{03bc}
1868
1869/\x{039c}+/i,utf
1870    \x{00b5}\x{039c}\x{03bc}
1871
1872/\x{03bc}+/i,utf
1873    \x{00b5}\x{039c}\x{03bc}
1874
1875
1876/\x{00c5}+/i,utf
1877    \x{00c5}\x{00e5}\x{212b}
1878
1879/\x{00e5}+/i,utf
1880    \x{00c5}\x{00e5}\x{212b}
1881
1882/\x{212b}+/i,utf
1883    \x{00c5}\x{00e5}\x{212b}
1884
1885
1886/\x{01c4}+/i,utf
1887    \x{01c4}\x{01c5}\x{01c6}
1888
1889/\x{01c5}+/i,utf
1890    \x{01c4}\x{01c5}\x{01c6}
1891
1892/\x{01c6}+/i,utf
1893    \x{01c4}\x{01c5}\x{01c6}
1894
1895
1896/\x{01c7}+/i,utf
1897    \x{01c7}\x{01c8}\x{01c9}
1898
1899/\x{01c8}+/i,utf
1900    \x{01c7}\x{01c8}\x{01c9}
1901
1902/\x{01c9}+/i,utf
1903    \x{01c7}\x{01c8}\x{01c9}
1904
1905
1906/\x{01ca}+/i,utf
1907    \x{01ca}\x{01cb}\x{01cc}
1908
1909/\x{01cb}+/i,utf
1910    \x{01ca}\x{01cb}\x{01cc}
1911
1912/\x{01cc}+/i,utf
1913    \x{01ca}\x{01cb}\x{01cc}
1914
1915
1916/\x{01f1}+/i,utf
1917    \x{01f1}\x{01f2}\x{01f3}
1918
1919/\x{01f2}+/i,utf
1920    \x{01f1}\x{01f2}\x{01f3}
1921
1922/\x{01f3}+/i,utf
1923    \x{01f1}\x{01f2}\x{01f3}
1924
1925
1926/\x{0345}+/i,utf
1927    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1928
1929/\x{0399}+/i,utf
1930    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1931
1932/\x{03b9}+/i,utf
1933    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1934
1935/\x{1fbe}+/i,utf
1936    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1937
1938
1939/\x{0392}+/i,utf
1940    \x{0392}\x{03b2}\x{03d0}
1941
1942/\x{03b2}+/i,utf
1943    \x{0392}\x{03b2}\x{03d0}
1944
1945/\x{03d0}+/i,utf
1946    \x{0392}\x{03b2}\x{03d0}
1947
1948
1949/\x{0395}+/i,utf
1950    \x{0395}\x{03b5}\x{03f5}
1951
1952/\x{03b5}+/i,utf
1953    \x{0395}\x{03b5}\x{03f5}
1954
1955/\x{03f5}+/i,utf
1956    \x{0395}\x{03b5}\x{03f5}
1957
1958
1959/\x{0398}+/i,utf
1960    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1961
1962/\x{03b8}+/i,utf
1963    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1964
1965/\x{03d1}+/i,utf
1966    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1967
1968/\x{03f4}+/i,utf
1969    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1970
1971
1972/\x{039a}+/i,utf
1973    \x{039a}\x{03ba}\x{03f0}
1974
1975/\x{03ba}+/i,utf
1976    \x{039a}\x{03ba}\x{03f0}
1977
1978/\x{03f0}+/i,utf
1979    \x{039a}\x{03ba}\x{03f0}
1980
1981
1982/\x{03a0}+/i,utf
1983    \x{03a0}\x{03c0}\x{03d6}
1984
1985/\x{03c0}+/i,utf
1986    \x{03a0}\x{03c0}\x{03d6}
1987
1988/\x{03d6}+/i,utf
1989    \x{03a0}\x{03c0}\x{03d6}
1990
1991
1992/\x{03a1}+/i,utf
1993    \x{03a1}\x{03c1}\x{03f1}
1994
1995/\x{03c1}+/i,utf
1996    \x{03a1}\x{03c1}\x{03f1}
1997
1998/\x{03f1}+/i,utf
1999    \x{03a1}\x{03c1}\x{03f1}
2000
2001
2002/\x{03a3}+/i,utf
2003    \x{03A3}\x{03C2}\x{03C3}
2004
2005/\x{03c2}+/i,utf
2006    \x{03A3}\x{03C2}\x{03C3}
2007
2008/\x{03c3}+/i,utf
2009    \x{03A3}\x{03C2}\x{03C3}
2010
2011
2012/\x{03a6}+/i,utf
2013    \x{03a6}\x{03c6}\x{03d5}
2014
2015/\x{03c6}+/i,utf
2016    \x{03a6}\x{03c6}\x{03d5}
2017
2018/\x{03d5}+/i,utf
2019    \x{03a6}\x{03c6}\x{03d5}
2020
2021
2022/\x{03c9}+/i,utf
2023    \x{03c9}\x{03a9}\x{2126}
2024
2025/\x{03a9}+/i,utf
2026    \x{03c9}\x{03a9}\x{2126}
2027
2028/\x{2126}+/i,utf
2029    \x{03c9}\x{03a9}\x{2126}
2030
2031
2032/\x{1e60}+/i,utf
2033    \x{1e60}\x{1e61}\x{1e9b}
2034
2035/\x{1e61}+/i,utf
2036    \x{1e60}\x{1e61}\x{1e9b}
2037
2038/\x{1e9b}+/i,utf
2039    \x{1e60}\x{1e61}\x{1e9b}
2040
2041
2042/\x{1e9e}+/i,utf
2043    \x{1e9e}\x{00df}
2044
2045/\x{00df}+/i,utf
2046    \x{1e9e}\x{00df}
2047
2048
2049/\x{1f88}+/i,utf
2050    \x{1f88}\x{1f80}
2051
2052/\x{1f80}+/i,utf
2053    \x{1f88}\x{1f80}
2054
2055# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
2056
2057/\x{004b}+/i,utf
2058    \x{004b}\x{006b}\x{212a}
2059
2060/\x{006b}+/i,utf
2061    \x{004b}\x{006b}\x{212a}
2062
2063/\x{212a}+/i,utf
2064    \x{004b}\x{006b}\x{212a}
2065
2066
2067/\x{0053}+/i,utf
2068    \x{0053}\x{0073}\x{017f}
2069
2070/\x{0073}+/i,utf
2071    \x{0053}\x{0073}\x{017f}
2072
2073/\x{017f}+/i,utf
2074    \x{0053}\x{0073}\x{017f}
2075
2076/^\p{Any}*\d{4}/utf
2077    1234
2078\= Expect no match
2079    123
2080
2081/^\X*\w{4}/utf
2082    1234
2083\= Expect no match
2084    123
2085
2086/^A\s+Z/utf,ucp
2087    A\x{2005}Z
2088    A\x{85}\x{2005}Z
2089
2090/^A[\s]+Z/utf,ucp
2091    A\x{2005}Z
2092    A\x{85}\x{2005}Z
2093
2094/^[[:graph:]]+$/utf,ucp
2095    Letter:ABC
2096    Mark:\x{300}\x{1d172}\x{1d17b}
2097    Number:9\x{660}
2098    Punctuation:\x{66a},;
2099    Symbol:\x{6de}<>\x{fffc}
2100    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2101    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2102    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2103    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2104    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2105    \x{feff}
2106    \x{fff9}\x{fffa}\x{fffb}
2107    \x{110bd}
2108    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2109    \x{e0001}
2110    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2111\= Expect no match
2112    \x{09}
2113    \x{0a}
2114    \x{1D}
2115    \x{20}
2116    \x{85}
2117    \x{a0}
2118    \x{1680}
2119    \x{2028}
2120    \x{2029}
2121    \x{202f}
2122    \x{2065}
2123    \x{3000}
2124    \x{e0002}
2125    \x{e001f}
2126    \x{e0080}
2127
2128/^[[:print:]]+$/utf,ucp
2129    Space: \x{a0}
2130    \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
2131    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
2132    \x{202f}\x{205f}
2133    \x{3000}
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{202f}
2143    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2144    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2145    \x{feff}
2146    \x{fff9}\x{fffa}\x{fffb}
2147    \x{110bd}
2148    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2149    \x{e0001}
2150    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2151\= Expect no match
2152    \x{09}
2153    \x{1D}
2154    \x{85}
2155    \x{2028}
2156    \x{2029}
2157    \x{2065}
2158    \x{e0002}
2159    \x{e001f}
2160    \x{e0080}
2161
2162/^[[:punct:]]+$/utf,ucp
2163    \$+<=>^`|~
2164    !\"#%&'()*,-./:;?@[\\]_{}
2165    \x{a1}\x{a7}
2166    \x{37e}
2167\= Expect no match
2168    abcde
2169
2170/^[[:^graph:]]+$/utf,ucp
2171    \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{1680}
2172    \x{2028}\x{2029}\x{202f}\x{2065}
2173    \x{3000}\x{e0002}\x{e001f}\x{e0080}
2174\= Expect no match
2175    Letter:ABC
2176    Mark:\x{300}\x{1d172}\x{1d17b}
2177    Number:9\x{660}
2178    Punctuation:\x{66a},;
2179    Symbol:\x{6de}<>\x{fffc}
2180    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2181    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2182    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2183    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2184    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2185    \x{feff}
2186    \x{fff9}\x{fffa}\x{fffb}
2187    \x{110bd}
2188    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2189    \x{e0001}
2190    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2191
2192/^[[:^print:]]+$/utf,ucp
2193    \x{09}\x{1D}\x{85}\x{2028}\x{2029}\x{2065}
2194    \x{e0002}\x{e001f}\x{e0080}
2195\= Expect no match
2196    Space: \x{a0}
2197    \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
2198    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
2199    \x{202f}\x{205f}
2200    \x{3000}
2201    Letter:ABC
2202    Mark:\x{300}\x{1d172}\x{1d17b}
2203    Number:9\x{660}
2204    Punctuation:\x{66a},;
2205    Symbol:\x{6de}<>\x{fffc}
2206    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2207    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2208    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2209    \x{202f}
2210    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2211    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2212    \x{feff}
2213    \x{fff9}\x{fffa}\x{fffb}
2214    \x{110bd}
2215    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2216    \x{e0001}
2217    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2218
2219/^[[:^punct:]]+$/utf,ucp
2220    abcde
2221\= Expect no match
2222    \$+<=>^`|~
2223    !\"#%&'()*,-./:;?@[\\]_{}
2224    \x{a1}\x{a7}
2225    \x{37e}
2226
2227/[RST]+/i,utf,ucp
2228    Ss\x{17f}
2229
2230/[R-T]+/i,utf,ucp
2231    Ss\x{17f}
2232
2233/[q-u]+/i,utf,ucp
2234    Ss\x{17f}
2235
2236/^s?c/im,utf
2237    scat
2238
2239# The next four tests are for repeated caseless back references when the
2240# code unit length of the matched text is different to that of the original
2241# group in the UTF-8 case.
2242
2243/^(\x{23a})\1*(.)/i,utf
2244    \x{23a}\x{23a}\x{23a}\x{23a}
2245    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2246    \x{23a}\x{23a}\x{2c65}\x{23a}
2247
2248/^(\x{23a})\1*(..)/i,utf
2249    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2250    \x{23a}\x{23a}\x{2c65}\x{23a}
2251
2252/^(\x{23a})\1*(...)/i,utf
2253    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2254    \x{23a}\x{23a}\x{2c65}\x{23a}
2255
2256/^(\x{23a})\1*(....)/i,utf
2257\= Expect no match
2258    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2259    \x{23a}\x{23a}\x{2c65}\x{23a}
2260
2261/[A-`]/i,utf
2262    abcdefghijklmno
2263
2264/[\S\V\H]/utf
2265
2266/[^\p{Any}]*+x/utf
2267    x
2268
2269/[[:punct:]]/utf,ucp
2270    \x{b4}
2271
2272/[[:^ascii:]]/utf,ucp
2273    \x{100}
2274    \x{200}
2275    \x{300}
2276    \x{37e}
2277\= Expect no match
2278    aa
2279    99
2280
2281/[[:^ascii:]\w]/utf,ucp
2282    aa
2283    99
2284    gg
2285    \x{100}
2286    \x{200}
2287    \x{300}
2288    \x{37e}
2289
2290/[\w[:^ascii:]]/utf,ucp
2291    aa
2292    99
2293    gg
2294    \x{100}
2295    \x{200}
2296    \x{300}
2297    \x{37e}
2298
2299/[^[:ascii:]\W]/utf,ucp
2300    \x{100}
2301    \x{200}
2302\= Expect no match
2303    aa
2304    99
2305    gg
2306    \x{37e}
2307
2308/[^[:^ascii:]\d]/utf,ucp
2309    a
2310    ~
2311    \a
2312    \x{7f}
2313\= Expect no match
2314    0
2315    \x{389}
2316    \x{20ac}
2317
2318/(?=.*b)\pL/
2319    11bb
2320
2321/(?(?=.*b)(?=.*b)\pL|.*c)/
2322    11bb
2323
2324/^\x{123}+?$/utf,no_auto_possess
2325    \x{123}\x{123}\x{123}
2326
2327/^\x{123}+?$/i,utf,no_auto_possess
2328    \x{123}\x{122}\x{123}
2329\= Expect no match
2330    \x{123}\x{124}\x{123}
2331
2332/\N{U+1234}/utf
2333    \x{1234}
2334
2335/[\N{U+1234}]/utf
2336    \x{1234}
2337
2338# Test the full list of Unicode "Pattern White Space" characters that are to
2339# be ignored by /x. The pattern lines below may show up oddly in text editors
2340# or when listed to the screen. Note that characters such as U+2002, which are
2341# matched as space by \h and \v are *not* "Pattern White Space".
2342
2343/A…‎‏

B/x,utf
2344    AB
2345
2346/A B/x,utf
2347    A\x{2002}B
2348\= Expect no match
2349    AB
2350
2351# -------
2352
2353/[^\x{100}-\x{ffff}]*[\x80-\xff]/utf
2354    \x{99}\x{99}\x{99}
2355
2356/[^\x{100}-\x{ffff}ABC]*[\x80-\xff]/utf
2357    \x{99}\x{99}\x{99}
2358
2359/[^\x{100}-\x{ffff}]*[\x80-\xff]/i,utf
2360    \x{99}\x{99}\x{99}
2361
2362# Script run tests
2363
2364/^(*script_run:.{4})/utf
2365    abcd                               Latin x4
2366    \x{2e80}\x{2fa1d}\x{3041}\x{30a1}  Han Han Hiragana Katakana
2367    \x{3041}\x{30a1}\x{3007}\x{3007}   Hiragana Katakana Han Han
2368    \x{30a1}\x{3041}\x{3007}\x{3007}   Katakana Hiragana Han Han
2369    \x{1100}\x{2e80}\x{2e80}\x{1101}   Hangul Han Han Hangul
2370    \x{2e80}\x{3105}\x{2e80}\x{3105}   Han Bopomofo Han Bopomofo
2371    \x{02ea}\x{2e80}\x{2e80}\x{3105}   Bopomofo-Sk Han Han Bopomofo
2372    \x{3105}\x{2e80}\x{2e80}\x{3105}   Bopomofo Han Han Bopomofo
2373    \x{0300}cd!                        Inherited Latin Latin Common
2374    \x{0391}12\x{03a9}                 Greek Common-digits Greek
2375    \x{0400}12\x{fe2f}                 Cyrillic Common-digits Cyrillic
2376    \x{0531}12\x{fb17}                 Armenian Common-digits Armenian
2377    \x{0591}12\x{fb4f}                 Hebrew Common-digits Hebrew
2378    \x{0600}12\x{1eef1}                Arabic Common-digits Arabic
2379    \x{0600}\x{0660}\x{0669}\x{1eef1}  Arabic Arabic-digits Arabic
2380    \x{0700}12\x{086a}                 Syriac Common-digits Syriac
2381    \x{1200}12\x{ab2e}                 Ethiopic Common-digits Ethiopic
2382    \x{1680}12\x{169c}                 Ogham Common-digits Ogham
2383    \x{3041}12\x{3041}                 Hiragana Common-digits Hiragana
2384    \x{0980}\x{09e6}\x{09e7}\x{0993}   Bengali Bengali-digits Bengali
2385    !cde                               Common Latin Latin Latin
2386    A..B                               Latin Common Common Latin
2387    0abc                               Ascii-digit Latin Latin Latin
2388    1\x{0700}\x{0700}\x{0700}          Ascii-digit Syriac x 3
2389    \x{1A80}\x{1A80}\x{1a40}\x{1a41}   Tai Tham Hora digits, letters
2390\= Expect no match
2391    a\x{370}bcd                        Latin Greek Latin Latin
2392    \x{1100}\x{02ea}\x{02ea}\x{02ea}   Hangul Bopomofo x3
2393    \x{02ea}\x{02ea}\x{02ea}\x{1100}   Bopomofo x3 Hangul
2394    \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
2395    \x{0391}\x{09e6}\x{09e7}\x{03a9}   Greek Bengali digits Greek
2396    \x{0600}7\x{0669}\x{1eef1}         Arabic ascii-digit Arabic-digit Arabic
2397    \x{0600}\x{0669}7\x{1eef1}         Arabic Arabic-digit ascii-digit Arabic
2398    A5\x{ff19}B                        Latin Common-ascii/notascii-digits Latin
2399    \x{0300}cd\x{0391}                 Inherited Latin Latin Greek
2400    !cd\x{0391}                        Common Latin Latin Greek
2401    \x{1A80}\x{1A90}\x{1a40}\x{1a41}   Tai Tham Hora digit, Tham digit, letters
2402    A\x{1d7ce}\x{1d7ff}B               Common fancy-common-2-sets-digits Common
2403    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2404
2405/^(*sr:.{4}|..)/utf
2406    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2407
2408/^(*atomic_script_run:.{4}|..)/utf
2409\= Expect no match
2410    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2411
2412/^(*asr:.*)/utf
2413\= Expect no match
2414    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2415
2416/^(?>(*sr:.*))/utf
2417    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2418
2419/^(*sr:.*)/utf
2420    \x{2e80}\x{3105}\x{2e80}\x{30a1}   Han Bopomofo Han Katakana
2421    \x{10fffd}\x{10fffd}\x{10fffd}     Private use (Unknown)
2422
2423/^(*sr:\x{2e80}*)/utf
2424    \x{2e80}\x{2e80}\x{3105}           Han Han Bopomofo
2425
2426/^(*sr:\x{2e80}*)\x{2e80}/utf
2427    \x{2e80}\x{2e80}\x{3105}           Han Han Bopomofo
2428
2429/^(*sr:.*)Test/utf
2430    Test script run on an empty string
2431
2432/^(*sr:(.{2})){2}/utf
2433    \x{0600}7\x{0669}\x{1eef1}         Arabic ascii-digit Arabic-digit Arabic
2434    \x{1A80}\x{1A80}\x{1a40}\x{1a41}   Tai Tham Hora digits, letters
2435    \x{1A80}\x{1a40}\x{1A90}\x{1a41}   Tai Tham Hora digit, letter, Tham digit, letter
2436\= Expect no match
2437    \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
2438
2439/^(*sr:\S*)/utf
2440    \x{1cf4}\x{20f0}\x{900}\x{11305}   [Dev,Gran,Kan] [Dev,Gran,Lat] Dev Gran
2441    \x{1cf4}\x{20f0}\x{11305}\x{900}   [Dev,Gran,Kan] [Dev,Gran,Lat] Gran Dev
2442    \x{1cf4}\x{20f0}\x{900}ABC         [Dev,Gran,Kan] [Dev,Gran,Lat] Dev Lat
2443    \x{1cf4}\x{20f0}ABC                [Dev,Gran,Kan] [Dev,Gran,Lat] Lat
2444    \x{20f0}ABC                        [Dev,Gran,Lat] Lat
2445    XYZ\x{20f0}ABC                     Lat [Dev,Gran,Lat] Lat
2446    \x{a36}\x{a33}\x{900}              [Dev,...] [Dev,...] Dev
2447    \x{3001}\x{2e80}\x{3041}\x{30a1}   [Bopo, Han, etc] Han Hira Kata
2448    \x{3001}\x{30a1}\x{2e80}\x{3041}   [Bopo, Han, etc] Kata Han Hira
2449    \x{3001}\x{3105}\x{2e80}\x{1101}   [Bopo, Han, etc] Bopomofo Han Hangul
2450    \x{3105}\x{3001}\x{2e80}\x{1101}   Bopomofo [Bopo, Han, etc] Han Hangul
2451    \x{3031}\x{3041}\x{30a1}\x{2e80}   [Hira Kata] Hira Kata Han
2452    \x{060c}\x{06d4}\x{0600}\x{10d00}\x{0700}  [Arab Rohg Syrc Thaa] [Arab Rohg] Arab Rohg Syrc
2453    \x{060c}\x{06d4}\x{0700}\x{0600}\x{10d00}  [Arab Rohg Syrc Thaa] [Arab Rohg] Syrc Arab Rohg
2454    \x{2e80}\x{3041}\x{3001}\x{3031}\x{2e80}   Han Hira [Bopo, Han, etc] [Hira Kata] Han
2455
2456/(?<!)(*sr:)/
2457
2458/(?<!X(*sr:B)C)/
2459
2460/(?<=abc(?=X(*sr:BCY)Z)XBCYZ)./
2461    abcXBCYZ!
2462
2463/(?<=abc(?=X(*sr:BXY)CCC)XBXYCCC)./
2464   abcXBXYCCC!
2465
2466/^(*sr:\S*)/utf
2467    \x{10d00}\x{10d00}\x{06d4}     Rohingya Rohingya Arabic-full-stop
2468    \x{06d4}\x{10d00}\x{10d00}     Arabic-full-stop Rohingya Rohingya
2469    \x{10d00}\x{10d00}\x{0363}     Rohingya Rohingya Inherited-extend-Latin
2470    \x{0363}\x{10d00}\x{10d00}     Inherited-extend-Latin Rohingya Rohingya
2471    AB\x{0363}                     Latin Latin Inherited-extend-Latin
2472    \x{0363}AB                     Inherited-extend-Latin Latin Latin
2473    AB\x{1cf7}                     Latin Latin Common-extended-Beng
2474    \x{1cf7}AB                     Common-extend-Beng Latin Latin
2475    \x{1cf7}\x{0993}               Common-extend-Beng Bengali
2476    A\x{1abe}BC                    Test enclosing mark
2477    \x{0370}\x{1abe}\x{0371}       Which can occur with any script (Greek here)
2478    \x{3001}\x{adf9}\x{3001}       [.. Hangul ..] Hangul [.. Hangul ..]
2479    \x{3400}\x{3001}XXX            Han [Han etc.]
2480    \x{3400}\x{1cd5}               Han [Bengali Devanagari]
2481    \x{ac01}\x{3400}               Hangul [.. Hangul ..]
2482    \x{ac01}\x{1cd5}               Hangul [Bengali Devanagari]
2483    \x{102e0}\x{06d4}\x{1ee4d}     [Arabic Coptic] [Arab Rohingya] Arabic
2484    \x{102e0}\x{06d4}\x{2cc9}      [Arabic Coptic] [Arab Rohingya] Coptic
2485    \x{102e0}\x{06d4}\x{10d30}     [Arabic Coptic] [Arab Rohingya] Rohingya
2486
2487# Test loop breaking for empty string match
2488
2489/^(*sr:A|)*BCD/utf
2490    AABCD
2491    ABCD
2492    BCD
2493
2494# The use of (*ACCEPT) breaks script run checking
2495
2496/^(*sr:.*(*ACCEPT)ZZ)/utf
2497    \x{1100}\x{2e80}\x{3041}\x{1101}   Hangul Han Hiragana Hangul
2498
2499# -------
2500
2501# Test group names containing non-ASCII letters and digits
2502
2503/(?'ABáC'...)\g{ABáC}/utf
2504    abcabcdefg
2505
2506/(?'XʰABC'...)/utf
2507    xyzpq
2508
2509/(?'XאABC'...)/utf
2510    12345
2511
2512/(?'XᾈABC'...)/utf
2513    %^&*(...
2514
2515/(?'��ABC'...)/utf
2516    abcde
2517
2518/^(?'אABC'...)(?&אABC)(?P=אABC)/utf
2519    123123123456
2520
2521/^(?'אABC'...)(?&אABC)/utf
2522    123123123456
2523
2524/\X*/
2525    \xF3aaa\xE4\xEA\xEB\xFEa
2526
2527/Я/i,utf
2528    \x{42f}
2529    \x{44f}
2530
2531/(?=Я)/i,utf
2532    \x{42f}
2533    \x{44f}
2534
2535# -----------------------------------------------------------------------------
2536# Tests for bidi control and bidi class properties.
2537
2538/\p{ bidi_control }/utf
2539    -->\x{202c}<--
2540
2541/\p{bidicontrol}+/utf
2542    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2543    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2544
2545/\p{bidic}+?/utf
2546    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2547    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2548
2549/\p{bidi_control}++/utf
2550    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2551    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2552
2553/[\p{bidi_c}]/utf
2554    -->\x{202c}<--
2555
2556/[\p{bidicontrol}]+/utf
2557    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2558    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2559
2560/[\p{bidicontrol}]+?/utf
2561    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2562    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2563
2564/[\p{bidicontrol}]++/utf
2565    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2566    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2567
2568/[\p{bidicontrol}<>]+/utf
2569    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2570    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2571
2572/\P{bidicontrol}+/g,utf
2573    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2574    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2575
2576/\p{^bidicontrol}+/g,utf
2577    -->\x{061c}\x{200e}\x{200f}\x{202a}\x{202b}\x{202c}\x{202d}<--
2578    -->\x{2066}\x{2067}\x{2068}\x{2069}<--
2579
2580/\p{bidi class = al}/utf
2581    -->\x{061D}<--
2582
2583/\p{bc = al}+/utf
2584    -->\x{061D}\x{061e}\x{061f}<--
2585
2586/\p{bidi_class : AL}+?/utf
2587    -->\x{061D}\x{061e}\x{061f}<--
2588
2589/\p{Bidi_Class : AL}++/utf
2590    -->\x{061D}\x{061e}\x{061f}<--
2591
2592/\p{b_c = aN}+/utf
2593    -->\x{061D}\x{0602}\x{0604}\x{061f}<--
2594
2595/\p{bidi class = B}+/utf
2596    -->\x{0a}\x{0d}\x{01c}\x{01e}\x{085}\x{2029}<--
2597
2598/\p{bidi class:BN}+/utf
2599    -->\x{0}\x{08}\x{200c}\x{fffe}\x{dfffe}\x{10ffff}<--
2600
2601/\p{bidiclass:cs}+/utf
2602    -->,.\x{060c}\x{ff1a}<--
2603
2604/\p{bidiclass:En}+/utf
2605    -->09\x{b2}\x{2074}\x{1fbf9}<--
2606
2607/\p{bidiclass:es}+/utf
2608    ==>+-\x{207a}\x{ff0d}<==
2609
2610/\p{bidiclass:et}+/utf
2611    -->#\{24}%\x{a2}\x{A838}\x{1e2ff}<--
2612
2613/\p{bidiclass:FSI}+/utf
2614    -->\x{2068}<--
2615
2616/\p{bidi class:L}+/utf
2617    -->ABC<--
2618
2619/\P{bidi class:L}+/utf
2620    -->ABC<--
2621
2622/\p{bidi class:LRE}+\p{bidiclass=lri}*\p{bidiclass:lro}/utf
2623    -->\x{202a}\x{2066}\x{202d}<--
2624
2625/\p{bidi class:NSM}+/utf
2626    -->\x{9bc}\x{a71}\x{e31}<--
2627
2628/\p{bidi class:ON}+/utf
2629    -->\x{21}'()*;@\x{384}\x{2039}<=-
2630
2631/\p{bidiclass:pdf}\p{bidiclass:pdi}/utf
2632    -->\x{202c}\x{2069}<--
2633
2634/\p{bidi class:R}+/utf
2635    -->\x{590}\x{5c6}\x{200f}\x{10805}<--
2636
2637/\p{bidi class:RLE}+\p{bidi class:RLI}*\p{bidi class:RLO}+/utf
2638    -->\x{202b}\x{2067}\x{202e}<--
2639
2640/\p{bidi class:S}+\p{bidiclass:WS}+/utf
2641    -->\x{9}\x{b}\x{1f}  \x{c} \x{2000} \x{3000}<--
2642
2643# -----------------------------------------------------------------------------
2644
2645/[\p{taml}\p{sc:ugar}]+/utf
2646    \x{0b82}\x{10380}
2647
2648/^[\p{sc:Arabic}]/utf
2649\= Expect no match
2650    \x{650}
2651    \x{651}
2652    \x{652}
2653    \x{653}
2654    \x{654}
2655    \x{655}
2656
2657# -----------------------------------------------------------------------------
2658# Tests for newly-added Boolean Properties
2659
2660/\p{ahex}\p{asciihexdigit}/utf
2661    >4F<
2662
2663/\p{alpha}\p{alphabetic}/g,utf
2664    >AB<>\x{148}\x{1234}
2665
2666/\p{ascii}\p{ascii}/g,utf
2667    >AB<>\x{148}\x{1234}
2668
2669/\p{Bidi_C}\p{bidicontrol}/g,utf
2670    >\x{202d}\x{2069}<
2671
2672/\p{Bidi_M}\p{bidimirrored}/g,utf
2673    >\x{202d}\x{2069}<>\x{298b}\x{bb}<
2674
2675/\p{cased}\p{cased}/g,utf
2676    >AN<>\x{149}\x{120}<
2677
2678/\p{caseignorable}\p{ci}/g,utf
2679    >AN<>\x{60}\x{859}<
2680
2681/\p{changeswhencasefolded}\p{cwcf}/g,utf
2682    >AN<>\x{149}\x{120}<
2683
2684/\p{changeswhencasemapped}\p{cwcm}/g,utf
2685    >AN<>\x{149}\x{120}<
2686
2687/\p{changeswhenlowercased}\p{cwl}/g,utf
2688    >AN<>\x{149}\x{120}<>yz<
2689
2690/\p{changeswhenuppercased}\p{cwu}/g,utf
2691    >AN<>\x{149}\x{120}<>yz<
2692
2693/\p{changeswhentitlecased}\p{cwt}/g,utf
2694    >AN<>\x{149}\x{120}<>yz<
2695
2696/\p{dash}\p{dash}/g,utf
2697    >\x{2d}\x{1400}<>yz<
2698
2699/\p{defaultignorablecodepoint}\p{di}/g,utf
2700    >AN<>\x{ad}\x{e0fff}<>yz<
2701
2702/\p{deprecated}\p{dep}/g,utf
2703    >AN<>\x{149}\x{e0001}<>yz<
2704
2705/\p{diacritic}\p{dia}/g,utf
2706    >AN<>\x{f84}\x{5e}<>yz<
2707
2708/\p{emojicomponent}\p{ecomp}/g,utf
2709    >AN<>\x{200d}\x{e007f}<>yz<
2710
2711/\p{emojimodifier}\p{emod}/g,utf
2712    >AN<>\x{1f3fb}\x{1f3ff}<>yz<
2713
2714/\p{emojipresentation}\p{epres}/g,utf
2715    >AN<>\x{2653}\x{1f6d2}<>yz<
2716
2717/\p{extender}\p{ext}/g,utf
2718    >AN<>\x{1e944}\x{b7}<>yz<
2719
2720/\p{extendedpictographic}\p{extpict}/g,utf
2721    >AN<>\x{26cf}\x{ae}<>yz<
2722
2723/\p{graphemebase}\p{grbase}/g,utf
2724    >AN<>\x{10f}\x{60}<>yz<
2725
2726/\p{graphemeextend}\p{grext}/g,utf
2727    >AN<>\x{300}\x{b44}<>yz<
2728
2729/\p{hexdigit}\p{hex}/g,utf
2730    >AF23<>\x{ff46}\x{ff10}<>yz<
2731
2732/\p{idcontinue}\p{idc}/g,utf
2733    >AF23<>\x{146}\x{7a}<>yz<
2734
2735/\p{ideographic}\p{ideo}/g,utf
2736    >AF23<>\x{30000}\x{3006}<>yz<
2737
2738/\p{idstart}\p{ids}/g,utf
2739    >AF23<>\x{146}\x{7a}<>yz<
2740
2741/\p{idsbinaryoperator}\p{idsb}/g,utf
2742    >AF23<>\x{2ff0}\x{2ffb}<>yz<\x{2ff2}\x{2ff1}
2743
2744/\p{idstrinaryoperator}\p{idst}/g,utf
2745    >AF23<>\x{2ff2}\x{2ff3}<>yz<
2746
2747/\p{Join Control}\p{joinc}/g,utf
2748    >AF23<>\x{200c}\x{200d}<>yz<
2749
2750/\p{logical_order_exception}\p{loe}/g,utf
2751    >AF23<>\x{e40}\x{aabc}<>yz<
2752
2753/\p{Lowercase}\p{lower}/g,utf
2754    >AF23<>\x{146}\x{7a}<>yz<
2755
2756/\p{math}\p{math}/g,utf
2757    >AF23<>\x{2215}\x{2b}<>yz<
2758
2759/\p{Non Character Code Point}\p{nchar}/g,utf
2760    >AF23<>\x{10ffff}\x{fdd0}<>yz<
2761
2762/\p{patternsyntax}\p{patsyn}/g,utf
2763    >AF23<>\x{21cd}\x{21}<>yz<
2764
2765/\p{patternwhitespace}\p{patws}/g,utf
2766    >AF23<>\x{2029}\x{85}<>yz<
2767
2768/\p{prependedconcatenationmark}\p{pcm}/g,utf
2769    >AF23<>\x{600}\x{110cd}<>yz<
2770
2771/\p{quotationmark}\p{qmark}/g,utf
2772    >AF23<>\x{ff63}\x{22}<>yz<
2773
2774/\p{radical}\p{radical}/g,utf
2775    >AF23<>\x{2fd5}\x{2e80}<>yz<
2776
2777/\p{regionalindicator}\p{ri}/g,utf
2778    >AF23<>\x{1f1e6}\x{1f1ff}<>yz<
2779
2780/=\p{whitespace}\p{space}\p{wspace}=/g,utf
2781    >AF23<=\x{d}\x{1680}\x{3000}=>yz<
2782
2783/\p{sentenceterminal}\p{sterm}/g,utf
2784    >AF23<>\x{1da88}\x{2e}<>yz<
2785
2786/\p{terminalpunctuation}\p{term}/g,utf
2787    >AF23<>\x{1da88}\x{2e}<>yz<
2788
2789/\p{unified ideograph}\p{uideo}/g,utf
2790    >AF23<>\x{30000}\x{3400}<>yz<
2791
2792/\p{UPPERcase}\p{upper}/g,utf
2793    >AF23<>\x{146}\x{7a}<>yz<
2794
2795/\p{variationselector}\p{vs}/g,utf
2796    >AF23<>\x{180b}\x{e01ef}<>yz<
2797
2798/\p{xidcontinue}\p{xidc}/g,utf
2799    >AF23<>\x{146}\x{30}<>yz<
2800
2801# -----------------------------------------------------------------------------
2802# Variable-length lookbehinds.
2803
2804/(?<=áb?c).../g,utf
2805    ábcdèfgácxyz
2806
2807/(?<=PQR|áb?c).../g,utf
2808    ábcdèfgácxyzPQR123
2809
2810/(?<=áb?c|PQR).../g,utf
2811    ábcdèfgácxyzPQR123
2812
2813/(?<=PQ|áb?c).../g,utf
2814    ábcdèfgácxyzPQR123
2815
2816/(?<=áb?c|PQ).../g,utf
2817    ábcdèfgácxyzPQR123
2818
2819/(?<=á(b?c|d?è?è)f)X./g,utf
2820     ácfX1zzzáèfX2zzzádèèfX3zzzX4zzz
2821
2822/(?<!á(b?c|d?è?è)f)X./g,utf
2823     ácfX1zzzáèfX2zzzádèèfX3zzzX4zzz
2824
2825/(?(?<=áb?c)d|è)/utf
2826    ábcdèfg
2827    ácdèfg
2828    áxdèfg
2829
2830/(?<=\d{2,3}|áBC)./utf
2831    áBCD
2832
2833/(?<=á(b?c){3}d)X/utf
2834   ZXácbccdXYZ
2835
2836/(?<=á(b?c){0}d)X/utf
2837   ZXádXYZ
2838
2839/(?<=á?(b?c){0}d)X./utf
2840   ZXádXYZ
2841
2842# --------------------------------------------------------------------------
2843
2844/\N{ U+1234 }/utf
2845    \x{1234}
2846
2847/\o{ 1234 }/utf
2848    x\o{1234}y
2849
2850/\x{ 1234 }/utf
2851    x\x{1234}y
2852
2853/\p{ L }/
2854    23AB56
2855
2856/\w+/utf,ucp
2857    --cafe\x{300}_au\x{203f}lait!
2858
2859/[\w]+/utf,ucp
2860    --cafe\x{300}_au\x{203f}lait!
2861
2862/[[:word:]]+/utf,ucp
2863    --cafe\x{300}_au\x{203f}lait!
2864
2865/[[:xdigit:]]+/utf,ucp
2866    --123ef\x{ff10}\x{ff19}\x{ff21}\x{ff26}\x{ff1a}
2867
2868/\b.+?\b/utf,ucp
2869    --cafe\x{300}_au\x{203f}lait!
2870
2871/caf\B.+?\B/utf,ucp
2872    --cafe\x{300}_au\x{203f}lait!
2873
2874# End of testinput4
2875