new upstream release (3.3.0); modify package compatibility for Stretch
[ossec-hids.git] / src / external / pcre2-10.32 / testdata / testinput4
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
474     ሴ
475
476 /^\ሴ/utf
477     ሴ
478
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
1515     ⱥ
1516     Ⱥx 
1517     Ⱥ 
1518
1519 /[ⱥ]/i,utf
1520     ⱥ
1521     Ⱥx 
1522     Ⱥ 
1523
1524 /Ⱥ/i,utf
1525     Ⱥ
1526     ⱥ
1527     
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\85‎‏

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