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