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

B/x,utf
2303    AB
2304
2305/A B/x,utf
2306    A\x{2002}B
2307\= Expect no match
2308    AB
2309
2310# -------
2311
2312/[^\x{100}-\x{ffff}]*[\x80-\xff]/utf
2313    \x{99}\x{99}\x{99}
2314
2315/[^\x{100}-\x{ffff}ABC]*[\x80-\xff]/utf
2316    \x{99}\x{99}\x{99}
2317
2318/[^\x{100}-\x{ffff}]*[\x80-\xff]/i,utf
2319    \x{99}\x{99}\x{99}
2320
2321# End of testinput4
2322