• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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    *There are no Prepend characters, so we can't test Prepend, CR
1608
1609/^(?>\X{2})X/utf,aftertext
1610    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1611
1612/^\X{2,4}X/utf,aftertext
1613    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1614    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1615    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1616
1617/^\X{2,4}?X/utf,aftertext
1618    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1619    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1620    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1621
1622/\X*Z/utf,no_start_optimize
1623\= Expect no match
1624    A\x{300}
1625
1626/\X*(.)/utf,no_start_optimize
1627    A\x{1111}\x{ae4c}\x{1169}
1628
1629# --------------------------------------------
1630
1631/\x{1e9e}+/i,utf
1632    \x{1e9e}\x{00df}
1633
1634/[z\x{1e9e}]+/i,utf
1635    \x{1e9e}\x{00df}
1636
1637/\x{00df}+/i,utf
1638    \x{1e9e}\x{00df}
1639
1640/[z\x{00df}]+/i,utf
1641    \x{1e9e}\x{00df}
1642
1643/\x{1f88}+/i,utf
1644    \x{1f88}\x{1f80}
1645
1646/[z\x{1f88}]+/i,utf
1647    \x{1f88}\x{1f80}
1648
1649# Check a reference with more than one other case
1650
1651/^(\x{00b5})\1{2}$/i,utf
1652    \x{00b5}\x{039c}\x{03bc}
1653
1654# Characters with more than one other case; test in classes
1655
1656/[z\x{00b5}]+/i,utf
1657    \x{00b5}\x{039c}\x{03bc}
1658
1659/[z\x{039c}]+/i,utf
1660    \x{00b5}\x{039c}\x{03bc}
1661
1662/[z\x{03bc}]+/i,utf
1663    \x{00b5}\x{039c}\x{03bc}
1664
1665/[z\x{00c5}]+/i,utf
1666    \x{00c5}\x{00e5}\x{212b}
1667
1668/[z\x{00e5}]+/i,utf
1669    \x{00c5}\x{00e5}\x{212b}
1670
1671/[z\x{212b}]+/i,utf
1672    \x{00c5}\x{00e5}\x{212b}
1673
1674/[z\x{01c4}]+/i,utf
1675    \x{01c4}\x{01c5}\x{01c6}
1676
1677/[z\x{01c5}]+/i,utf
1678    \x{01c4}\x{01c5}\x{01c6}
1679
1680/[z\x{01c6}]+/i,utf
1681    \x{01c4}\x{01c5}\x{01c6}
1682
1683/[z\x{01c7}]+/i,utf
1684    \x{01c7}\x{01c8}\x{01c9}
1685
1686/[z\x{01c8}]+/i,utf
1687    \x{01c7}\x{01c8}\x{01c9}
1688
1689/[z\x{01c9}]+/i,utf
1690    \x{01c7}\x{01c8}\x{01c9}
1691
1692/[z\x{01ca}]+/i,utf
1693    \x{01ca}\x{01cb}\x{01cc}
1694
1695/[z\x{01cb}]+/i,utf
1696    \x{01ca}\x{01cb}\x{01cc}
1697
1698/[z\x{01cc}]+/i,utf
1699    \x{01ca}\x{01cb}\x{01cc}
1700
1701/[z\x{01f1}]+/i,utf
1702    \x{01f1}\x{01f2}\x{01f3}
1703
1704/[z\x{01f2}]+/i,utf
1705    \x{01f1}\x{01f2}\x{01f3}
1706
1707/[z\x{01f3}]+/i,utf
1708    \x{01f1}\x{01f2}\x{01f3}
1709
1710/[z\x{0345}]+/i,utf
1711    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1712
1713/[z\x{0399}]+/i,utf
1714    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1715
1716/[z\x{03b9}]+/i,utf
1717    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1718
1719/[z\x{1fbe}]+/i,utf
1720    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1721
1722/[z\x{0392}]+/i,utf
1723    \x{0392}\x{03b2}\x{03d0}
1724
1725/[z\x{03b2}]+/i,utf
1726    \x{0392}\x{03b2}\x{03d0}
1727
1728/[z\x{03d0}]+/i,utf
1729    \x{0392}\x{03b2}\x{03d0}
1730
1731/[z\x{0395}]+/i,utf
1732    \x{0395}\x{03b5}\x{03f5}
1733
1734/[z\x{03b5}]+/i,utf
1735    \x{0395}\x{03b5}\x{03f5}
1736
1737/[z\x{03f5}]+/i,utf
1738    \x{0395}\x{03b5}\x{03f5}
1739
1740/[z\x{0398}]+/i,utf
1741    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1742
1743/[z\x{03b8}]+/i,utf
1744    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1745
1746/[z\x{03d1}]+/i,utf
1747    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1748
1749/[z\x{03f4}]+/i,utf
1750    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1751
1752/[z\x{039a}]+/i,utf
1753    \x{039a}\x{03ba}\x{03f0}
1754
1755/[z\x{03ba}]+/i,utf
1756    \x{039a}\x{03ba}\x{03f0}
1757
1758/[z\x{03f0}]+/i,utf
1759    \x{039a}\x{03ba}\x{03f0}
1760
1761/[z\x{03a0}]+/i,utf
1762    \x{03a0}\x{03c0}\x{03d6}
1763
1764/[z\x{03c0}]+/i,utf
1765    \x{03a0}\x{03c0}\x{03d6}
1766
1767/[z\x{03d6}]+/i,utf
1768    \x{03a0}\x{03c0}\x{03d6}
1769
1770/[z\x{03a1}]+/i,utf
1771    \x{03a1}\x{03c1}\x{03f1}
1772
1773/[z\x{03c1}]+/i,utf
1774    \x{03a1}\x{03c1}\x{03f1}
1775
1776/[z\x{03f1}]+/i,utf
1777    \x{03a1}\x{03c1}\x{03f1}
1778
1779/[z\x{03a3}]+/i,utf
1780    \x{03A3}\x{03C2}\x{03C3}
1781
1782/[z\x{03c2}]+/i,utf
1783    \x{03A3}\x{03C2}\x{03C3}
1784
1785/[z\x{03c3}]+/i,utf
1786    \x{03A3}\x{03C2}\x{03C3}
1787
1788/[z\x{03a6}]+/i,utf
1789    \x{03a6}\x{03c6}\x{03d5}
1790
1791/[z\x{03c6}]+/i,utf
1792    \x{03a6}\x{03c6}\x{03d5}
1793
1794/[z\x{03d5}]+/i,utf
1795    \x{03a6}\x{03c6}\x{03d5}
1796
1797/[z\x{03c9}]+/i,utf
1798    \x{03c9}\x{03a9}\x{2126}
1799
1800/[z\x{03a9}]+/i,utf
1801    \x{03c9}\x{03a9}\x{2126}
1802
1803/[z\x{2126}]+/i,utf
1804    \x{03c9}\x{03a9}\x{2126}
1805
1806/[z\x{1e60}]+/i,utf
1807    \x{1e60}\x{1e61}\x{1e9b}
1808
1809/[z\x{1e61}]+/i,utf
1810    \x{1e60}\x{1e61}\x{1e9b}
1811
1812/[z\x{1e9b}]+/i,utf
1813    \x{1e60}\x{1e61}\x{1e9b}
1814
1815# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
1816
1817/[z\x{004b}]+/i,utf
1818    \x{004b}\x{006b}\x{212a}
1819
1820/[z\x{006b}]+/i,utf
1821    \x{004b}\x{006b}\x{212a}
1822
1823/[z\x{212a}]+/i,utf
1824    \x{004b}\x{006b}\x{212a}
1825
1826/[z\x{0053}]+/i,utf
1827    \x{0053}\x{0073}\x{017f}
1828
1829/[z\x{0073}]+/i,utf
1830    \x{0053}\x{0073}\x{017f}
1831
1832/[z\x{017f}]+/i,utf
1833    \x{0053}\x{0073}\x{017f}
1834
1835# --------------------------------------
1836
1837/(ΣΆΜΟΣ) \1/i,utf
1838    ΣΆΜΟΣ ΣΆΜΟΣ
1839    ΣΆΜΟΣ σάμος
1840    σάμος σάμος
1841    σάμος σάμοσ
1842    σάμος ΣΆΜΟΣ
1843
1844/(σάμος) \1/i,utf
1845    ΣΆΜΟΣ ΣΆΜΟΣ
1846    ΣΆΜΟΣ σάμος
1847    σάμος σάμος
1848    σάμος σάμοσ
1849    σάμος ΣΆΜΟΣ
1850
1851/(ΣΆΜΟΣ) \1*/i,utf
1852    ΣΆΜΟΣ\x20
1853    ΣΆΜΟΣ ΣΆΜΟΣσάμοςσάμος
1854
1855# Perl matches these
1856
1857/\x{00b5}+/i,utf
1858    \x{00b5}\x{039c}\x{03bc}
1859
1860/\x{039c}+/i,utf
1861    \x{00b5}\x{039c}\x{03bc}
1862
1863/\x{03bc}+/i,utf
1864    \x{00b5}\x{039c}\x{03bc}
1865
1866
1867/\x{00c5}+/i,utf
1868    \x{00c5}\x{00e5}\x{212b}
1869
1870/\x{00e5}+/i,utf
1871    \x{00c5}\x{00e5}\x{212b}
1872
1873/\x{212b}+/i,utf
1874    \x{00c5}\x{00e5}\x{212b}
1875
1876
1877/\x{01c4}+/i,utf
1878    \x{01c4}\x{01c5}\x{01c6}
1879
1880/\x{01c5}+/i,utf
1881    \x{01c4}\x{01c5}\x{01c6}
1882
1883/\x{01c6}+/i,utf
1884    \x{01c4}\x{01c5}\x{01c6}
1885
1886
1887/\x{01c7}+/i,utf
1888    \x{01c7}\x{01c8}\x{01c9}
1889
1890/\x{01c8}+/i,utf
1891    \x{01c7}\x{01c8}\x{01c9}
1892
1893/\x{01c9}+/i,utf
1894    \x{01c7}\x{01c8}\x{01c9}
1895
1896
1897/\x{01ca}+/i,utf
1898    \x{01ca}\x{01cb}\x{01cc}
1899
1900/\x{01cb}+/i,utf
1901    \x{01ca}\x{01cb}\x{01cc}
1902
1903/\x{01cc}+/i,utf
1904    \x{01ca}\x{01cb}\x{01cc}
1905
1906
1907/\x{01f1}+/i,utf
1908    \x{01f1}\x{01f2}\x{01f3}
1909
1910/\x{01f2}+/i,utf
1911    \x{01f1}\x{01f2}\x{01f3}
1912
1913/\x{01f3}+/i,utf
1914    \x{01f1}\x{01f2}\x{01f3}
1915
1916
1917/\x{0345}+/i,utf
1918    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1919
1920/\x{0399}+/i,utf
1921    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1922
1923/\x{03b9}+/i,utf
1924    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1925
1926/\x{1fbe}+/i,utf
1927    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1928
1929
1930/\x{0392}+/i,utf
1931    \x{0392}\x{03b2}\x{03d0}
1932
1933/\x{03b2}+/i,utf
1934    \x{0392}\x{03b2}\x{03d0}
1935
1936/\x{03d0}+/i,utf
1937    \x{0392}\x{03b2}\x{03d0}
1938
1939
1940/\x{0395}+/i,utf
1941    \x{0395}\x{03b5}\x{03f5}
1942
1943/\x{03b5}+/i,utf
1944    \x{0395}\x{03b5}\x{03f5}
1945
1946/\x{03f5}+/i,utf
1947    \x{0395}\x{03b5}\x{03f5}
1948
1949
1950/\x{0398}+/i,utf
1951    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1952
1953/\x{03b8}+/i,utf
1954    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1955
1956/\x{03d1}+/i,utf
1957    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1958
1959/\x{03f4}+/i,utf
1960    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1961
1962
1963/\x{039a}+/i,utf
1964    \x{039a}\x{03ba}\x{03f0}
1965
1966/\x{03ba}+/i,utf
1967    \x{039a}\x{03ba}\x{03f0}
1968
1969/\x{03f0}+/i,utf
1970    \x{039a}\x{03ba}\x{03f0}
1971
1972
1973/\x{03a0}+/i,utf
1974    \x{03a0}\x{03c0}\x{03d6}
1975
1976/\x{03c0}+/i,utf
1977    \x{03a0}\x{03c0}\x{03d6}
1978
1979/\x{03d6}+/i,utf
1980    \x{03a0}\x{03c0}\x{03d6}
1981
1982
1983/\x{03a1}+/i,utf
1984    \x{03a1}\x{03c1}\x{03f1}
1985
1986/\x{03c1}+/i,utf
1987    \x{03a1}\x{03c1}\x{03f1}
1988
1989/\x{03f1}+/i,utf
1990    \x{03a1}\x{03c1}\x{03f1}
1991
1992
1993/\x{03a3}+/i,utf
1994    \x{03A3}\x{03C2}\x{03C3}
1995
1996/\x{03c2}+/i,utf
1997    \x{03A3}\x{03C2}\x{03C3}
1998
1999/\x{03c3}+/i,utf
2000    \x{03A3}\x{03C2}\x{03C3}
2001
2002
2003/\x{03a6}+/i,utf
2004    \x{03a6}\x{03c6}\x{03d5}
2005
2006/\x{03c6}+/i,utf
2007    \x{03a6}\x{03c6}\x{03d5}
2008
2009/\x{03d5}+/i,utf
2010    \x{03a6}\x{03c6}\x{03d5}
2011
2012
2013/\x{03c9}+/i,utf
2014    \x{03c9}\x{03a9}\x{2126}
2015
2016/\x{03a9}+/i,utf
2017    \x{03c9}\x{03a9}\x{2126}
2018
2019/\x{2126}+/i,utf
2020    \x{03c9}\x{03a9}\x{2126}
2021
2022
2023/\x{1e60}+/i,utf
2024    \x{1e60}\x{1e61}\x{1e9b}
2025
2026/\x{1e61}+/i,utf
2027    \x{1e60}\x{1e61}\x{1e9b}
2028
2029/\x{1e9b}+/i,utf
2030    \x{1e60}\x{1e61}\x{1e9b}
2031
2032
2033/\x{1e9e}+/i,utf
2034    \x{1e9e}\x{00df}
2035
2036/\x{00df}+/i,utf
2037    \x{1e9e}\x{00df}
2038
2039
2040/\x{1f88}+/i,utf
2041    \x{1f88}\x{1f80}
2042
2043/\x{1f80}+/i,utf
2044    \x{1f88}\x{1f80}
2045
2046# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
2047
2048/\x{004b}+/i,utf
2049    \x{004b}\x{006b}\x{212a}
2050
2051/\x{006b}+/i,utf
2052    \x{004b}\x{006b}\x{212a}
2053
2054/\x{212a}+/i,utf
2055    \x{004b}\x{006b}\x{212a}
2056
2057
2058/\x{0053}+/i,utf
2059    \x{0053}\x{0073}\x{017f}
2060
2061/\x{0073}+/i,utf
2062    \x{0053}\x{0073}\x{017f}
2063
2064/\x{017f}+/i,utf
2065    \x{0053}\x{0073}\x{017f}
2066
2067/^\p{Any}*\d{4}/utf
2068    1234
2069\= Expect no match
2070    123
2071
2072/^\X*\w{4}/utf
2073    1234
2074\= Expect no match
2075    123
2076
2077/^A\s+Z/utf,ucp
2078    A\x{2005}Z
2079    A\x{85}\x{2005}Z
2080
2081/^A[\s]+Z/utf,ucp
2082    A\x{2005}Z
2083    A\x{85}\x{2005}Z
2084
2085/^[[:graph:]]+$/utf,ucp
2086    Letter:ABC
2087    Mark:\x{300}\x{1d172}\x{1d17b}
2088    Number:9\x{660}
2089    Punctuation:\x{66a},;
2090    Symbol:\x{6de}<>\x{fffc}
2091    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2092    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2093    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2094    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2095    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2096    \x{feff}
2097    \x{fff9}\x{fffa}\x{fffb}
2098    \x{110bd}
2099    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2100    \x{e0001}
2101    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2102\= Expect no match
2103    \x{09}
2104    \x{0a}
2105    \x{1D}
2106    \x{20}
2107    \x{85}
2108    \x{a0}
2109    \x{1680}
2110    \x{2028}
2111    \x{2029}
2112    \x{202f}
2113    \x{2065}
2114    \x{3000}
2115    \x{e0002}
2116    \x{e001f}
2117    \x{e0080}
2118
2119/^[[:print:]]+$/utf,ucp
2120    Space: \x{a0}
2121    \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
2122    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
2123    \x{202f}\x{205f}
2124    \x{3000}
2125    Letter:ABC
2126    Mark:\x{300}\x{1d172}\x{1d17b}
2127    Number:9\x{660}
2128    Punctuation:\x{66a},;
2129    Symbol:\x{6de}<>\x{fffc}
2130    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2131    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2132    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2133    \x{202f}
2134    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2135    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2136    \x{feff}
2137    \x{fff9}\x{fffa}\x{fffb}
2138    \x{110bd}
2139    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2140    \x{e0001}
2141    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2142\= Expect no match
2143    \x{09}
2144    \x{1D}
2145    \x{85}
2146    \x{2028}
2147    \x{2029}
2148    \x{2065}
2149    \x{e0002}
2150    \x{e001f}
2151    \x{e0080}
2152
2153/^[[:punct:]]+$/utf,ucp
2154    \$+<=>^`|~
2155    !\"#%&'()*,-./:;?@[\\]_{}
2156    \x{a1}\x{a7}
2157    \x{37e}
2158\= Expect no match
2159    abcde
2160
2161/^[[:^graph:]]+$/utf,ucp
2162    \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{1680}
2163    \x{2028}\x{2029}\x{202f}\x{2065}
2164    \x{3000}\x{e0002}\x{e001f}\x{e0080}
2165\= Expect no match
2166    Letter:ABC
2167    Mark:\x{300}\x{1d172}\x{1d17b}
2168    Number:9\x{660}
2169    Punctuation:\x{66a},;
2170    Symbol:\x{6de}<>\x{fffc}
2171    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2172    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2173    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2174    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2175    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2176    \x{feff}
2177    \x{fff9}\x{fffa}\x{fffb}
2178    \x{110bd}
2179    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2180    \x{e0001}
2181    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2182
2183/^[[:^print:]]+$/utf,ucp
2184    \x{09}\x{1D}\x{85}\x{2028}\x{2029}\x{2065}
2185    \x{e0002}\x{e001f}\x{e0080}
2186\= Expect no match
2187    Space: \x{a0}
2188    \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
2189    \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
2190    \x{202f}\x{205f}
2191    \x{3000}
2192    Letter:ABC
2193    Mark:\x{300}\x{1d172}\x{1d17b}
2194    Number:9\x{660}
2195    Punctuation:\x{66a},;
2196    Symbol:\x{6de}<>\x{fffc}
2197    Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
2198    \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
2199    \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
2200    \x{202f}
2201    \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
2202    \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
2203    \x{feff}
2204    \x{fff9}\x{fffa}\x{fffb}
2205    \x{110bd}
2206    \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
2207    \x{e0001}
2208    \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
2209
2210/^[[:^punct:]]+$/utf,ucp
2211    abcde
2212\= Expect no match
2213    \$+<=>^`|~
2214    !\"#%&'()*,-./:;?@[\\]_{}
2215    \x{a1}\x{a7}
2216    \x{37e}
2217
2218/[RST]+/i,utf,ucp
2219    Ss\x{17f}
2220
2221/[R-T]+/i,utf,ucp
2222    Ss\x{17f}
2223
2224/[q-u]+/i,utf,ucp
2225    Ss\x{17f}
2226
2227/^s?c/im,utf
2228    scat
2229
2230# The next four tests are for repeated caseless back references when the
2231# code unit length of the matched text is different to that of the original
2232# group in the UTF-8 case.
2233
2234/^(\x{23a})\1*(.)/i,utf
2235    \x{23a}\x{23a}\x{23a}\x{23a}
2236    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2237    \x{23a}\x{23a}\x{2c65}\x{23a}
2238
2239/^(\x{23a})\1*(..)/i,utf
2240    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2241    \x{23a}\x{23a}\x{2c65}\x{23a}
2242
2243/^(\x{23a})\1*(...)/i,utf
2244    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2245    \x{23a}\x{23a}\x{2c65}\x{23a}
2246
2247/^(\x{23a})\1*(....)/i,utf
2248\= Expect no match
2249    \x{23a}\x{2c65}\x{2c65}\x{2c65}
2250    \x{23a}\x{23a}\x{2c65}\x{23a}
2251
2252/[A-`]/i,utf
2253    abcdefghijklmno
2254
2255/[\S\V\H]/utf
2256
2257/[^\p{Any}]*+x/utf
2258    x
2259
2260/[[:punct:]]/utf,ucp
2261    \x{b4}
2262
2263/[[:^ascii:]]/utf,ucp
2264    \x{100}
2265    \x{200}
2266    \x{300}
2267    \x{37e}
2268\= Expect no match
2269    aa
2270    99
2271
2272/[[:^ascii:]\w]/utf,ucp
2273    aa
2274    99
2275    gg
2276    \x{100}
2277    \x{200}
2278    \x{300}
2279    \x{37e}
2280
2281/[\w[:^ascii:]]/utf,ucp
2282    aa
2283    99
2284    gg
2285    \x{100}
2286    \x{200}
2287    \x{300}
2288    \x{37e}
2289
2290/[^[:ascii:]\W]/utf,ucp
2291    \x{100}
2292    \x{200}
2293\= Expect no match
2294    aa
2295    99
2296    gg
2297    \x{37e}
2298
2299/[^[:^ascii:]\d]/utf,ucp
2300    a
2301    ~
2302    \a
2303    \x{7f}
2304\= Expect no match
2305    0
2306    \x{389}
2307    \x{20ac}
2308
2309/(?=.*b)\pL/
2310    11bb
2311
2312/(?(?=.*b)(?=.*b)\pL|.*c)/
2313    11bb
2314
2315/^\x{123}+?$/utf,no_auto_possess
2316    \x{123}\x{123}\x{123}
2317
2318/^\x{123}+?$/i,utf,no_auto_possess
2319    \x{123}\x{122}\x{123}
2320\= Expect no match
2321    \x{123}\x{124}\x{123}
2322
2323/\N{U+1234}/utf
2324    \x{1234}
2325
2326/[\N{U+1234}]/utf
2327    \x{1234}
2328
2329# Test the full list of Unicode "Pattern White Space" characters that are to
2330# be ignored by /x. The pattern lines below may show up oddly in text editors
2331# or when listed to the screen. Note that characters such as U+2002, which are
2332# matched as space by \h and \v are *not* "Pattern White Space".
2333
2334/A…‎‏

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