• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This set of tests checks UTF and Unicode property support with the DFA
2# matching functionality of pcre_dfa_match(). A default subject modifier is
3# used to force DFA matching for all tests.
4
5#subject dfa
6#newline_default LF any anyCRLF
7
8/\x{100}ab/utf
9  \x{100}ab
10
11/a\x{100}*b/utf
12    ab
13    a\x{100}b
14    a\x{100}\x{100}b
15
16/a\x{100}+b/utf
17    a\x{100}b
18    a\x{100}\x{100}b
19\= Expect no match
20    ab
21
22/\bX/utf
23    Xoanon
24    +Xoanon
25    \x{300}Xoanon
26\= Expect no match
27    YXoanon
28
29/\BX/utf
30    YXoanon
31\= Expect no match
32    Xoanon
33    +Xoanon
34    \x{300}Xoanon
35
36/X\b/utf
37    X+oanon
38    ZX\x{300}oanon
39    FAX
40\= Expect no match
41    Xoanon
42
43/X\B/utf
44    Xoanon
45\= Expect no match
46    X+oanon
47    ZX\x{300}oanon
48    FAX
49
50/[^a]/utf
51    abcd
52    a\x{100}
53
54/^[abc\x{123}\x{400}-\x{402}]{2,3}\d/utf
55    ab99
56    \x{123}\x{123}45
57    \x{400}\x{401}\x{402}6
58\= Expect no match
59    d99
60    \x{123}\x{122}4
61    \x{400}\x{403}6
62    \x{400}\x{401}\x{402}\x{402}6
63
64/a.b/utf
65    acb
66    a\x7fb
67    a\x{100}b
68\= Expect no match
69    a\nb
70
71/a(.{3})b/utf
72    a\x{4000}xyb
73    a\x{4000}\x7fyb
74    a\x{4000}\x{100}yb
75\= Expect no match
76    a\x{4000}b
77    ac\ncb
78
79/a(.*?)(.)/
80    a\xc0\x88b
81
82/a(.*?)(.)/utf
83    a\x{100}b
84
85/a(.*)(.)/
86    a\xc0\x88b
87
88/a(.*)(.)/utf
89    a\x{100}b
90
91/a(.)(.)/
92    a\xc0\x92bcd
93
94/a(.)(.)/utf
95    a\x{240}bcd
96
97/a(.?)(.)/
98    a\xc0\x92bcd
99
100/a(.?)(.)/utf
101    a\x{240}bcd
102
103/a(.??)(.)/
104    a\xc0\x92bcd
105
106/a(.??)(.)/utf
107    a\x{240}bcd
108
109/a(.{3})b/utf
110    a\x{1234}xyb
111    a\x{1234}\x{4321}yb
112    a\x{1234}\x{4321}\x{3412}b
113\= Expect no match
114    a\x{1234}b
115    ac\ncb
116
117/a(.{3,})b/utf
118    a\x{1234}xyb
119    a\x{1234}\x{4321}yb
120    a\x{1234}\x{4321}\x{3412}b
121    axxxxbcdefghijb
122    a\x{1234}\x{4321}\x{3412}\x{3421}b
123\= Expect no match
124    a\x{1234}b
125
126/a(.{3,}?)b/utf
127    a\x{1234}xyb
128    a\x{1234}\x{4321}yb
129    a\x{1234}\x{4321}\x{3412}b
130    axxxxbcdefghijb
131    a\x{1234}\x{4321}\x{3412}\x{3421}b
132\= Expect no match
133    a\x{1234}b
134
135/a(.{3,5})b/utf
136    a\x{1234}xyb
137    a\x{1234}\x{4321}yb
138    a\x{1234}\x{4321}\x{3412}b
139    axxxxbcdefghijb
140    a\x{1234}\x{4321}\x{3412}\x{3421}b
141    axbxxbcdefghijb
142    axxxxxbcdefghijb
143\= Expect no match
144    a\x{1234}b
145    axxxxxxbcdefghijb
146
147/a(.{3,5}?)b/utf
148    a\x{1234}xyb
149    a\x{1234}\x{4321}yb
150    a\x{1234}\x{4321}\x{3412}b
151    axxxxbcdefghijb
152    a\x{1234}\x{4321}\x{3412}\x{3421}b
153    axbxxbcdefghijb
154    axxxxxbcdefghijb
155\= Expect no match
156    a\x{1234}b
157    axxxxxxbcdefghijb
158
159/^[a\x{c0}]/utf
160\= Expect no match
161    \x{100}
162
163/(?<=aXb)cd/utf
164    aXbcd
165
166/(?<=a\x{100}b)cd/utf
167    a\x{100}bcd
168
169/(?<=a\x{100000}b)cd/utf
170    a\x{100000}bcd
171
172/(?:\x{100}){3}b/utf
173    \x{100}\x{100}\x{100}b
174\= Expect no match
175    \x{100}\x{100}b
176
177/\x{ab}/utf
178    \x{ab}
179    \xc2\xab
180\= Expect no match
181    \x00{ab}
182
183/(?<=(.))X/utf
184    WXYZ
185    \x{256}XYZ
186\= Expect no match
187    XYZ
188
189/[^a]+/g,utf
190    bcd
191    \x{100}aY\x{256}Z
192
193/^[^a]{2}/utf
194    \x{100}bc
195
196/^[^a]{2,}/utf
197    \x{100}bcAa
198
199/^[^a]{2,}?/utf
200    \x{100}bca
201
202/[^a]+/gi,utf
203    bcd
204    \x{100}aY\x{256}Z
205
206/^[^a]{2}/i,utf
207    \x{100}bc
208
209/^[^a]{2,}/i,utf
210    \x{100}bcAa
211
212/^[^a]{2,}?/i,utf
213    \x{100}bca
214
215/\x{100}{0,0}/utf
216    abcd
217
218/\x{100}?/utf
219    abcd
220    \x{100}\x{100}
221
222/\x{100}{0,3}/utf
223    \x{100}\x{100}
224    \x{100}\x{100}\x{100}\x{100}
225
226/\x{100}*/utf
227    abce
228    \x{100}\x{100}\x{100}\x{100}
229
230/\x{100}{1,1}/utf
231    abcd\x{100}\x{100}\x{100}\x{100}
232
233/\x{100}{1,3}/utf
234    abcd\x{100}\x{100}\x{100}\x{100}
235
236/\x{100}+/utf
237    abcd\x{100}\x{100}\x{100}\x{100}
238
239/\x{100}{3}/utf
240    abcd\x{100}\x{100}\x{100}XX
241
242/\x{100}{3,5}/utf
243    abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
244
245/\x{100}{3,}/utf,no_auto_possess
246    abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
247
248/(?<=a\x{100}{2}b)X/utf
249    Xyyya\x{100}\x{100}bXzzz
250
251/\D*/utf,no_auto_possess
252  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
253
254/\D*/utf,no_auto_possess
255  \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
256
257/\D/utf
258    1X2
259    1\x{100}2
260
261/>\S/utf
262    > >X Y
263    > >\x{100} Y
264
265/\d/utf
266    \x{100}3
267
268/\s/utf
269    \x{100} X
270
271/\D+/utf
272    12abcd34
273\= Expect no match
274    1234
275
276/\D{2,3}/utf
277    12abcd34
278    12ab34
279\= Expect no match
280    1234
281    12a34
282
283/\D{2,3}?/utf
284    12abcd34
285    12ab34
286\= Expect no match
287    1234
288    12a34
289
290/\d+/utf
291    12abcd34
292
293/\d{2,3}/utf
294    12abcd34
295    1234abcd
296\= Expect no match
297    1.4
298
299/\d{2,3}?/utf
300    12abcd34
301    1234abcd
302\= Expect no match
303    1.4
304
305/\S+/utf
306    12abcd34
307\= Expect no match
308    \    \
309
310/\S{2,3}/utf
311    12abcd34
312    1234abcd
313\= Expect no match
314    \     \
315
316/\S{2,3}?/utf
317    12abcd34
318    1234abcd
319\= Expect no match
320    \     \
321
322/>\s+</utf
323    12>      <34
324
325/>\s{2,3}</utf
326    ab>  <cd
327    ab>   <ce
328\= Expect no match
329    ab>    <cd
330
331/>\s{2,3}?</utf
332    ab>  <cd
333    ab>   <ce
334\= Expect no match
335    ab>    <cd
336
337/\w+/utf
338    12      34
339\= Expect no match
340    +++=*!
341
342/\w{2,3}/utf
343    ab  cd
344    abcd ce
345\= Expect no match
346    a.b.c
347
348/\w{2,3}?/utf
349    ab  cd
350    abcd ce
351\= Expect no match
352    a.b.c
353
354/\W+/utf
355    12====34
356\= Expect no match
357    abcd
358
359/\W{2,3}/utf
360    ab====cd
361    ab==cd
362\= Expect no match
363    a.b.c
364
365/\W{2,3}?/utf
366    ab====cd
367    ab==cd
368\= Expect no match
369    a.b.c
370
371/[\x{100}]/utf
372    \x{100}
373    Z\x{100}
374    \x{100}Z
375
376/[Z\x{100}]/utf
377    Z\x{100}
378    \x{100}
379    \x{100}Z
380
381/[\x{100}\x{200}]/utf
382   ab\x{100}cd
383   ab\x{200}cd
384
385/[\x{100}-\x{200}]/utf
386   ab\x{100}cd
387   ab\x{200}cd
388   ab\x{111}cd
389
390/[z-\x{200}]/utf
391   ab\x{100}cd
392   ab\x{200}cd
393   ab\x{111}cd
394   abzcd
395   ab|cd
396
397/[Q\x{100}\x{200}]/utf
398   ab\x{100}cd
399   ab\x{200}cd
400   Q?
401
402/[Q\x{100}-\x{200}]/utf
403   ab\x{100}cd
404   ab\x{200}cd
405   ab\x{111}cd
406   Q?
407
408/[Qz-\x{200}]/utf
409   ab\x{100}cd
410   ab\x{200}cd
411   ab\x{111}cd
412   abzcd
413   ab|cd
414   Q?
415
416/[\x{100}\x{200}]{1,3}/utf
417   ab\x{100}cd
418   ab\x{200}cd
419   ab\x{200}\x{100}\x{200}\x{100}cd
420
421/[\x{100}\x{200}]{1,3}?/utf
422   ab\x{100}cd
423   ab\x{200}cd
424   ab\x{200}\x{100}\x{200}\x{100}cd
425
426/[Q\x{100}\x{200}]{1,3}/utf
427   ab\x{100}cd
428   ab\x{200}cd
429   ab\x{200}\x{100}\x{200}\x{100}cd
430
431/[Q\x{100}\x{200}]{1,3}?/utf
432   ab\x{100}cd
433   ab\x{200}cd
434   ab\x{200}\x{100}\x{200}\x{100}cd
435
436/(?<=[\x{100}\x{200}])X/utf
437    abc\x{200}X
438    abc\x{100}X
439\= Expect no match
440    X
441
442/(?<=[Q\x{100}\x{200}])X/utf
443    abc\x{200}X
444    abc\x{100}X
445    abQX
446\= Expect no match
447    X
448
449/(?<=[\x{100}\x{200}]{3})X/utf
450    abc\x{100}\x{200}\x{100}X
451\= Expect no match
452    abc\x{200}X
453    X
454
455/[^\x{100}\x{200}]X/utf
456    AX
457    \x{150}X
458    \x{500}X
459\= Expect no match
460    \x{100}X
461    \x{200}X
462
463/[^Q\x{100}\x{200}]X/utf
464    AX
465    \x{150}X
466    \x{500}X
467\= Expect no match
468    \x{100}X
469    \x{200}X
470    QX
471
472/[^\x{100}-\x{200}]X/utf
473    AX
474    \x{500}X
475\= Expect no match
476    \x{100}X
477    \x{150}X
478    \x{200}X
479
480/[z-\x{100}]/i,utf
481    z
482    Z
483    \x{100}
484\= Expect no match
485    \x{102}
486    y
487
488/[\xFF]/
489    >\xff<
490
491/[\xff]/utf
492    >\x{ff}<
493
494/[^\xFF]/
495    XYZ
496
497/[^\xff]/utf
498    XYZ
499    \x{123}
500
501/^[ac]*b/utf
502\= Expect no match
503    xb
504
505/^[ac\x{100}]*b/utf
506\= Expect no match
507    xb
508
509/^[^x]*b/i,utf
510\= Expect no match
511    xb
512
513/^[^x]*b/utf
514\= Expect no match
515    xb
516
517/^\d*b/utf
518\= Expect no match
519    xb
520
521/(|a)/g,utf
522    catac
523    a\x{256}a
524
525/^\x{85}$/i,utf
526    \x{85}
527
528/^abc./gmx,newline=any,utf
529    abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
530
531/abc.$/gmx,newline=any,utf
532    abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
533
534/^a\Rb/bsr=unicode,utf
535    a\nb
536    a\rb
537    a\r\nb
538    a\x0bb
539    a\x0cb
540    a\x{85}b
541    a\x{2028}b
542    a\x{2029}b
543\= Expect no match
544    a\n\rb
545
546/^a\R*b/bsr=unicode,utf
547    ab
548    a\nb
549    a\rb
550    a\r\nb
551    a\x0bb
552    a\x0c\x{2028}\x{2029}b
553    a\x{85}b
554    a\n\rb
555    a\n\r\x{85}\x0cb
556
557/^a\R+b/bsr=unicode,utf
558    a\nb
559    a\rb
560    a\r\nb
561    a\x0bb
562    a\x0c\x{2028}\x{2029}b
563    a\x{85}b
564    a\n\rb
565    a\n\r\x{85}\x0cb
566\= Expect no match
567    ab
568
569/^a\R{1,3}b/bsr=unicode,utf
570    a\nb
571    a\n\rb
572    a\n\r\x{85}b
573    a\r\n\r\nb
574    a\r\n\r\n\r\nb
575    a\n\r\n\rb
576    a\n\n\r\nb
577\= Expect no match
578    a\n\n\n\rb
579    a\r
580
581/\h+\V?\v{3,4}/utf,no_auto_possess
582    \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
583
584/\V?\v{3,4}/utf,no_auto_possess
585    \x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
586
587/\h+\V?\v{3,4}/utf,no_auto_possess
588    >\x09\x20\x{a0}X\x0a\x0a\x0a<
589
590/\V?\v{3,4}/utf,no_auto_possess
591    >\x09\x20\x{a0}X\x0a\x0a\x0a<
592
593/\H\h\V\v/utf
594    X X\x0a
595    X\x09X\x0b
596\= Expect no match
597    \x{a0} X\x0a
598
599/\H*\h+\V?\v{3,4}/utf,no_auto_possess
600    \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
601    \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
602    \x09\x20\x{a0}\x0a\x0b\x0c
603\= Expect no match
604    \x09\x20\x{a0}\x0a\x0b
605
606/\H\h\V\v/utf
607    \x{3001}\x{3000}\x{2030}\x{2028}
608    X\x{180e}X\x{85}
609\= Expect no match
610    \x{2009} X\x0a
611
612/\H*\h+\V?\v{3,4}/utf,no_auto_possess
613    \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
614    \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
615    \x09\x20\x{202f}\x0a\x0b\x0c
616\= Expect no match
617    \x09\x{200a}\x{a0}\x{2028}\x0b
618
619/a\Rb/I,bsr=anycrlf,utf
620    a\rb
621    a\nb
622    a\r\nb
623\= Expect no match
624    a\x{85}b
625    a\x0bb
626
627/a\Rb/I,bsr=unicode,utf
628    a\rb
629    a\nb
630    a\r\nb
631    a\x{85}b
632    a\x0bb
633
634/a\R?b/I,bsr=anycrlf,utf
635    a\rb
636    a\nb
637    a\r\nb
638\= Expect no match
639    a\x{85}b
640    a\x0bb
641
642/a\R?b/I,bsr=unicode,utf
643    a\rb
644    a\nb
645    a\r\nb
646    a\x{85}b
647    a\x0bb
648
649/X/newline=any,utf,firstline
650    A\x{1ec5}ABCXYZ
651
652/abcd*/utf
653    xxxxabcd\=ps
654    xxxxabcd\=ph
655
656/abcd*/i,utf
657    xxxxabcd\=ps
658    xxxxabcd\=ph
659    XXXXABCD\=ps
660    XXXXABCD\=ph
661
662/abc\d*/utf
663    xxxxabc1\=ps
664    xxxxabc1\=ph
665
666/abc[de]*/utf
667    xxxxabcde\=ps
668    xxxxabcde\=ph
669
670/\bthe cat\b/utf
671    the cat\=ps
672    the cat\=ph
673
674/./newline=crlf,utf
675    \r\=ps
676    \r\=ph
677
678/.{2,3}/newline=crlf,utf
679    \r\=ps
680    \r\=ph
681    \r\r\=ps
682    \r\r\=ph
683    \r\r\r\=ps
684    \r\r\r\=ph
685
686/.{2,3}?/newline=crlf,utf
687    \r\=ps
688    \r\=ph
689    \r\r\=ps
690    \r\r\=ph
691    \r\r\r\=ps
692    \r\r\r\=ph
693
694/[^\x{100}]/utf
695    \x{100}\x{101}X
696
697/[^\x{100}]+/utf
698    \x{100}\x{101}X
699
700/\pL\P{Nd}/utf
701    AB
702\= Expect no match
703    A0
704    00
705
706/\X./utf
707    AB
708    A\x{300}BC
709    A\x{300}\x{301}\x{302}BC
710\= Expect no match
711    \x{300}
712
713/\X\X/utf
714    ABC
715    A\x{300}B\x{300}\x{301}C
716    A\x{300}\x{301}\x{302}BC
717\= Expect no match
718    \x{300}
719
720/^\pL+/utf
721    abcd
722    a
723
724/^\PL+/utf
725    1234
726    =
727\= Expect no match
728    abcd
729
730/^\X+/utf
731    abcdA\x{300}\x{301}\x{302}
732    A\x{300}\x{301}\x{302}
733    A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}
734    a
735    \x{300}\x{301}\x{302}
736
737/\X?abc/utf
738    abc
739    A\x{300}abc
740    A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
741    \x{300}abc
742
743/^\X?abc/utf
744    abc
745    A\x{300}abc
746    \x{300}abc
747\= Expect no match
748    A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
749
750/\X*abc/utf
751    abc
752    A\x{300}abc
753    A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
754    \x{300}abc
755
756/^\X*abc/utf
757    abc
758    A\x{300}abc
759    A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
760    \x{300}abc
761
762/^\pL?=./utf
763    A=b
764    =c
765\= Expect no match
766    1=2
767    AAAA=b
768
769/^\pL*=./utf
770    AAAA=b
771    =c
772\= Expect no match
773    1=2
774
775/^\X{2,3}X/utf
776    A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
777    A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
778\= Expect no match
779    X
780    A\x{300}\x{301}\x{302}X
781    A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
782
783/^\pC\pL\pM\pN\pP\pS\pZ</utf
784    \x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
785    \np\x{300}9!\$ <
786\= Expect no match
787    ap\x{300}9!\$ <
788
789/^\PC/utf
790    X
791\= Expect no match
792    \x7f
793
794/^\PL/utf
795    9
796\= Expect no match
797    \x{c0}
798
799/^\PM/utf
800    X
801\= Expect no match
802    \x{30f}
803
804/^\PN/utf
805    X
806\= Expect no match
807    \x{660}
808
809/^\PP/utf
810    X
811\= Expect no match
812    \x{66c}
813
814/^\PS/utf
815    X
816\= Expect no match
817    \x{f01}
818
819/^\PZ/utf
820    X
821\= Expect no match
822    \x{1680}
823
824/^\p{Cc}/utf
825    \x{017}
826    \x{09f}
827\= Expect no match
828    \x{0600}
829
830/^\p{Cf}/utf
831    \x{601}
832    \x{180e}
833    \x{061c}
834    \x{2066}
835    \x{2067}
836    \x{2068}
837    \x{2069}
838\= Expect no match
839    \x{09f}
840
841/^\p{Cn}/utf
842\= Expect no match
843    \x{09f}
844
845/^\p{Co}/utf
846    \x{f8ff}
847\= Expect no match
848    \x{09f}
849
850/^\p{Cs}/utf
851    \x{dfff}\=no_utf_check
852\= Expect no match
853    \x{09f}
854
855/^\p{Ll}/utf
856    a
857\= Expect no match
858    Z
859    \x{e000}
860
861/^\p{Lm}/utf
862    \x{2b0}
863\= Expect no match
864    a
865
866/^\p{Lo}/utf
867    \x{1bb}
868\= Expect no match
869    a
870    \x{2b0}
871
872/^\p{Lt}/utf
873    \x{1c5}
874\= Expect no match
875    a
876    \x{2b0}
877
878/^\p{Lu}/utf
879    A
880\= Expect no match
881    \x{2b0}
882
883/^\p{Mc}/utf
884    \x{903}
885\= Expect no match
886    X
887    \x{300}
888
889/^\p{Me}/utf
890    \x{488}
891\= Expect no match
892    X
893    \x{903}
894    \x{300}
895
896/^\p{Mn}/utf
897    \x{300}
898    \x{1a1b}
899\= Expect no match
900    X
901    \x{903}
902
903/^\p{Nd}+/utf,no_auto_possess
904    0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
905    \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
906    \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
907\= Expect no match
908    X
909
910/^\p{Nl}/utf
911    \x{16ee}
912\= Expect no match
913    X
914    \x{966}
915
916/^\p{No}/utf
917    \x{b2}
918    \x{b3}
919\= Expect no match
920    X
921    \x{16ee}
922
923/^\p{Pc}/utf
924    \x5f
925    \x{203f}
926\= Expect no match
927    X
928    -
929    \x{58a}
930
931/^\p{Pd}/utf
932    -
933    \x{58a}
934\= Expect no match
935    X
936    \x{203f}
937
938/^\p{Pe}/utf
939    )
940    ]
941    }
942    \x{f3b}
943    \x{2309}
944    \x{230b}
945\= Expect no match
946    X
947    \x{203f}
948    (
949    [
950    {
951    \x{f3c}
952
953/^\p{Pf}/utf
954    \x{bb}
955    \x{2019}
956\= Expect no match
957    X
958    \x{203f}
959
960/^\p{Pi}/utf
961    \x{ab}
962    \x{2018}
963\= Expect no match
964    X
965    \x{203f}
966
967/^\p{Po}/utf
968    !
969    \x{37e}
970\= Expect no match
971    X
972    \x{203f}
973
974/^\p{Ps}/utf
975    (
976    [
977    {
978    \x{f3c}
979    \x{2308}
980    \x{230a}
981\= Expect no match
982    X
983    )
984    ]
985    }
986    \x{f3b}
987
988/^\p{Sc}+/utf
989    $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
990    \x{9f2}
991\= Expect no match
992    X
993    \x{2c2}
994
995/^\p{Sk}/utf
996    \x{2c2}
997\= Expect no match
998    X
999    \x{9f2}
1000
1001/^\p{Sm}+/utf
1002    +<|~\x{ac}\x{2044}
1003\= Expect no match
1004    X
1005    \x{9f2}
1006
1007/^\p{So}/utf
1008    \x{a6}
1009    \x{482}
1010\= Expect no match
1011    X
1012    \x{9f2}
1013
1014/^\p{Zl}/utf
1015    \x{2028}
1016\= Expect no match
1017    X
1018    \x{2029}
1019
1020/^\p{Zp}/utf
1021    \x{2029}
1022\= Expect no match
1023    X
1024    \x{2028}
1025
1026/^\p{Zs}/utf
1027    \ \
1028    \x{a0}
1029    \x{1680}
1030    \x{2000}
1031    \x{2001}
1032\= Expect no match
1033    \x{2028}
1034    \x{200d}
1035
1036/\p{Nd}+(..)/utf
1037      \x{660}\x{661}\x{662}ABC
1038
1039/\p{Nd}+?(..)/utf
1040      \x{660}\x{661}\x{662}ABC
1041
1042/\p{Nd}{2,}(..)/utf
1043      \x{660}\x{661}\x{662}ABC
1044
1045/\p{Nd}{2,}?(..)/utf
1046      \x{660}\x{661}\x{662}ABC
1047
1048/\p{Nd}*(..)/utf
1049      \x{660}\x{661}\x{662}ABC
1050
1051/\p{Nd}*?(..)/utf
1052      \x{660}\x{661}\x{662}ABC
1053
1054/\p{Nd}{2}(..)/utf
1055      \x{660}\x{661}\x{662}ABC
1056
1057/\p{Nd}{2,3}(..)/utf
1058      \x{660}\x{661}\x{662}ABC
1059
1060/\p{Nd}{2,3}?(..)/utf
1061      \x{660}\x{661}\x{662}ABC
1062
1063/\p{Nd}?(..)/utf
1064      \x{660}\x{661}\x{662}ABC
1065
1066/\p{Nd}??(..)/utf
1067      \x{660}\x{661}\x{662}ABC
1068
1069/\p{Nd}*+(..)/utf
1070      \x{660}\x{661}\x{662}ABC
1071
1072/\p{Nd}*+(...)/utf
1073      \x{660}\x{661}\x{662}ABC
1074
1075/\p{Nd}*+(....)/utf
1076\= Expect no match
1077      \x{660}\x{661}\x{662}ABC
1078
1079/\p{Lu}/i,utf
1080    A
1081    a\x{10a0}B
1082\= Expect no match
1083    a
1084    \x{1d00}
1085
1086/\p{^Lu}/i,utf
1087    1234
1088\= Expect no match
1089    ABC
1090
1091/\P{Lu}/i,utf
1092    1234
1093\= Expect no match
1094    ABC
1095
1096/(?<=A\p{Nd})XYZ/utf
1097    A2XYZ
1098    123A5XYZPQR
1099    ABA\x{660}XYZpqr
1100\= Expect no match
1101    AXYZ
1102    XYZ
1103
1104/(?<!\pL)XYZ/utf
1105    1XYZ
1106    AB=XYZ..
1107    XYZ
1108\= Expect no match
1109    WXYZ
1110
1111/[\p{Nd}]/utf
1112    1234
1113
1114/[\p{Nd}+-]+/utf
1115    1234
1116    12-34
1117    12+\x{661}-34
1118\= Expect no match
1119    abcd
1120
1121/[\P{Nd}]+/utf
1122    abcd
1123\= Expect no match
1124    1234
1125
1126/\D+/utf,no_auto_possess
1127    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1128\= Expect no match
1129    11111111111111111111111111111111111111111111111111111111111111111111111
1130
1131/\P{Nd}+/utf,no_auto_possess
1132    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1133\= Expect no match
1134    11111111111111111111111111111111111111111111111111111111111111111111111
1135
1136/[\D]+/utf,no_auto_possess
1137    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1138\= Expect no match
1139    11111111111111111111111111111111111111111111111111111111111111111111111
1140
1141/[\P{Nd}]+/utf,no_auto_possess
1142    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1143\= Expect no match
1144    11111111111111111111111111111111111111111111111111111111111111111111111
1145
1146/[\D\P{Nd}]+/utf,no_auto_possess
1147    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1148\= Expect no match
1149    11111111111111111111111111111111111111111111111111111111111111111111111
1150
1151/\pL/utf
1152    a
1153    A
1154
1155/\pL/i,utf
1156    a
1157    A
1158
1159/\p{Lu}/utf
1160    A
1161    aZ
1162\= Expect no match
1163    abc
1164
1165/\p{Lu}/i,utf
1166    A
1167    aZ
1168\= Expect no match
1169    abc
1170
1171/\p{Ll}/utf
1172    a
1173    Az
1174\= Expect no match
1175    ABC
1176
1177/\p{Ll}/i,utf
1178    a
1179    Az
1180\= Expect no match
1181    ABC
1182
1183/^\x{c0}$/i,utf
1184    \x{c0}
1185    \x{e0}
1186
1187/^\x{e0}$/i,utf
1188    \x{c0}
1189    \x{e0}
1190
1191/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
1192    A\x{391}\x{10427}\x{ff3a}\x{1fb0}
1193\= Expect no match
1194    a\x{391}\x{10427}\x{ff3a}\x{1fb0}
1195    A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
1196    A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
1197    A\x{391}\x{10427}\x{ff5a}\x{1fb0}
1198    A\x{391}\x{10427}\x{ff3a}\x{1fb8}
1199
1200/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
1201    A\x{391}\x{10427}\x{ff3a}\x{1fb0}
1202    a\x{391}\x{10427}\x{ff3a}\x{1fb0}
1203    A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
1204    A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
1205    A\x{391}\x{10427}\x{ff5a}\x{1fb0}
1206    A\x{391}\x{10427}\x{ff3a}\x{1fb8}
1207
1208/\x{391}+/i,utf
1209    \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
1210
1211/\x{391}{3,5}(.)/i,utf
1212    \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
1213
1214/\x{391}{3,5}?(.)/i,utf
1215    \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
1216
1217/[\x{391}\x{ff3a}]/i,utf
1218    \x{391}
1219    \x{ff3a}
1220    \x{3b1}
1221    \x{ff5a}
1222
1223/[\x{c0}\x{391}]/i,utf
1224    \x{c0}
1225    \x{e0}
1226
1227/[\x{105}-\x{109}]/i,utf
1228    \x{104}
1229    \x{105}
1230    \x{109}
1231\= Expect no match
1232    \x{100}
1233    \x{10a}
1234
1235/[z-\x{100}]/i,utf
1236    Z
1237    z
1238    \x{39c}
1239    \x{178}
1240    |
1241    \x{80}
1242    \x{ff}
1243    \x{100}
1244    \x{101}
1245\= Expect no match
1246    \x{102}
1247    Y
1248    y
1249
1250/[z-\x{100}]/i,utf
1251
1252/^\X/utf
1253    A
1254    A\x{300}BC
1255    A\x{300}\x{301}\x{302}BC
1256    \x{300}
1257
1258/^(\X*)C/utf
1259    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
1260    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1261
1262/^(\X*?)C/utf
1263    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
1264    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1265
1266/^(\X*)(.)/utf
1267    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
1268    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1269
1270/^(\X*?)(.)/utf
1271    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
1272    A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1273
1274/^\X(.)/utf
1275\= Expect no match
1276    A\x{300}\x{301}\x{302}
1277
1278/^\X{2,3}(.)/utf
1279    A\x{300}\x{301}B\x{300}X
1280    A\x{300}\x{301}B\x{300}C\x{300}\x{301}
1281    A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
1282    A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
1283
1284/^\X{2,3}?(.)/utf
1285    A\x{300}\x{301}B\x{300}X
1286    A\x{300}\x{301}B\x{300}C\x{300}\x{301}
1287    A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
1288    A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
1289
1290/^\pN{2,3}X/
1291    12X
1292    123X
1293\= Expect no match
1294    X
1295    1X
1296    1234X
1297
1298/\x{100}/i,utf
1299    \x{100}
1300    \x{101}
1301
1302/^\p{Han}+/utf
1303    \x{2e81}\x{3007}\x{2f804}\x{31a0}
1304\= Expect no match
1305    \x{2e7f}
1306
1307/^\P{Katakana}+/utf
1308    \x{3105}
1309\= Expect no match
1310    \x{30ff}
1311
1312/^[\p{Arabic}]/utf
1313    \x{06e9}
1314    \x{060b}
1315\= Expect no match
1316    X\x{06e9}
1317
1318/^[\P{Yi}]/utf
1319    \x{2f800}
1320\= Expect no match
1321    \x{a014}
1322    \x{a4c6}
1323
1324/^\p{Any}X/utf
1325    AXYZ
1326    \x{1234}XYZ
1327\= Expect no match
1328    X
1329
1330/^\P{Any}X/utf
1331\= Expect no match
1332    AX
1333
1334/^\p{Any}?X/utf
1335    XYZ
1336    AXYZ
1337    \x{1234}XYZ
1338\= Expect no match
1339    ABXYZ
1340
1341/^\P{Any}?X/utf
1342    XYZ
1343\= Expect no match
1344    AXYZ
1345    \x{1234}XYZ
1346    ABXYZ
1347
1348/^\p{Any}+X/utf
1349    AXYZ
1350    \x{1234}XYZ
1351    A\x{1234}XYZ
1352\= Expect no match
1353    XYZ
1354
1355/^\P{Any}+X/utf
1356\= Expect no match
1357    AXYZ
1358    \x{1234}XYZ
1359    A\x{1234}XYZ
1360    XYZ
1361
1362/^\p{Any}*X/utf
1363    XYZ
1364    AXYZ
1365    \x{1234}XYZ
1366    A\x{1234}XYZ
1367
1368/^\P{Any}*X/utf
1369    XYZ
1370\= Expect no match
1371    AXYZ
1372    \x{1234}XYZ
1373    A\x{1234}XYZ
1374
1375/^[\p{Any}]X/utf
1376    AXYZ
1377    \x{1234}XYZ
1378\= Expect no match
1379    X
1380
1381/^[\P{Any}]X/utf
1382\= Expect no match
1383    AX
1384
1385/^[\p{Any}]?X/utf
1386    XYZ
1387    AXYZ
1388    \x{1234}XYZ
1389\= Expect no match
1390    ABXYZ
1391
1392/^[\P{Any}]?X/utf
1393    XYZ
1394\= Expect no match
1395    AXYZ
1396    \x{1234}XYZ
1397    ABXYZ
1398
1399/^[\p{Any}]+X/utf
1400    AXYZ
1401    \x{1234}XYZ
1402    A\x{1234}XYZ
1403\= Expect no match
1404    XYZ
1405
1406/^[\P{Any}]+X/utf
1407\= Expect no match
1408    AXYZ
1409    \x{1234}XYZ
1410    A\x{1234}XYZ
1411    XYZ
1412
1413/^[\p{Any}]*X/utf
1414    XYZ
1415    AXYZ
1416    \x{1234}XYZ
1417    A\x{1234}XYZ
1418
1419/^[\P{Any}]*X/utf
1420    XYZ
1421\= Expect no match
1422    AXYZ
1423    \x{1234}XYZ
1424    A\x{1234}XYZ
1425
1426/^\p{Any}{3,5}?/utf
1427    abcdefgh
1428    \x{1234}\n\r\x{3456}xyz
1429
1430/^\p{Any}{3,5}/utf
1431    abcdefgh
1432    \x{1234}\n\r\x{3456}xyz
1433
1434/^\P{Any}{3,5}?/utf
1435\= Expect no match
1436    abcdefgh
1437    \x{1234}\n\r\x{3456}xyz
1438
1439/^\p{L&}X/utf
1440     AXY
1441     aXY
1442     \x{1c5}XY
1443\= Expect no match
1444     \x{1bb}XY
1445     \x{2b0}XY
1446     !XY
1447
1448/^[\p{L&}]X/utf
1449     AXY
1450     aXY
1451     \x{1c5}XY
1452\= Expect no match
1453     \x{1bb}XY
1454     \x{2b0}XY
1455     !XY
1456
1457/^\p{L&}+X/utf
1458     AXY
1459     aXY
1460     AbcdeXyz
1461     \x{1c5}AbXY
1462     abcDEXypqreXlmn
1463\= Expect no match
1464     \x{1bb}XY
1465     \x{2b0}XY
1466     !XY
1467
1468/^[\p{L&}]+X/utf
1469     AXY
1470     aXY
1471     AbcdeXyz
1472     \x{1c5}AbXY
1473     abcDEXypqreXlmn
1474\= Expect no match
1475     \x{1bb}XY
1476     \x{2b0}XY
1477     !XY
1478
1479/^\p{L&}+?X/utf
1480     AXY
1481     aXY
1482     AbcdeXyz
1483     \x{1c5}AbXY
1484     abcDEXypqreXlmn
1485\= Expect no match
1486     \x{1bb}XY
1487     \x{2b0}XY
1488     !XY
1489
1490/^[\p{L&}]+?X/utf
1491     AXY
1492     aXY
1493     AbcdeXyz
1494     \x{1c5}AbXY
1495     abcDEXypqreXlmn
1496\= Expect no match
1497     \x{1bb}XY
1498     \x{2b0}XY
1499     !XY
1500
1501/^\P{L&}X/utf
1502     !XY
1503     \x{1bb}XY
1504     \x{2b0}XY
1505\= Expect no match
1506     \x{1c5}XY
1507     AXY
1508
1509/^[\P{L&}]X/utf
1510     !XY
1511     \x{1bb}XY
1512     \x{2b0}XY
1513\= Expect no match
1514     \x{1c5}XY
1515     AXY
1516
1517/^\x{023a}+?(\x{0130}+)/i,utf
1518  \x{023a}\x{2c65}\x{0130}
1519
1520/^\x{023a}+([^X])/i,utf
1521  \x{023a}\x{2c65}X
1522
1523/\x{c0}+\x{116}+/i,utf
1524    \x{c0}\x{e0}\x{116}\x{117}
1525
1526/[\x{c0}\x{116}]+/i,utf
1527    \x{c0}\x{e0}\x{116}\x{117}
1528
1529# Check property support in non-UTF-8 mode
1530
1531/\p{L}{4}/
1532    123abcdefg
1533    123abc\xc4\xc5zz
1534
1535/\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
1536    \x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
1537
1538/\x{a77d}\x{1d79}/i,utf
1539    \x{a77d}\x{1d79}
1540    \x{1d79}\x{a77d}
1541
1542/\x{a77d}\x{1d79}/utf
1543    \x{a77d}\x{1d79}
1544\= Expect no match
1545    \x{1d79}\x{a77d}
1546
1547/^\p{Xan}/utf
1548    ABCD
1549    1234
1550    \x{6ca}
1551    \x{a6c}
1552    \x{10a7}
1553\= Expect no match
1554    _ABC
1555
1556/^\p{Xan}+/utf
1557    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1558\= Expect no match
1559    _ABC
1560
1561/^\p{Xan}*/utf
1562    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1563
1564/^\p{Xan}{2,9}/utf
1565    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1566
1567/^[\p{Xan}]/utf
1568    ABCD1234_
1569    1234abcd_
1570    \x{6ca}
1571    \x{a6c}
1572    \x{10a7}
1573\= Expect no match
1574    _ABC
1575
1576/^[\p{Xan}]+/utf
1577    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1578\= Expect no match
1579    _ABC
1580
1581/^>\p{Xsp}/utf
1582    >\x{1680}\x{2028}\x{0b}
1583\= Expect no match
1584    \x{0b}
1585
1586/^>\p{Xsp}+/utf,no_auto_possess
1587    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1588
1589/^>\p{Xsp}*/utf,no_auto_possess
1590    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1591
1592/^>\p{Xsp}{2,9}/utf,no_auto_possess
1593    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1594
1595/^>[\p{Xsp}]/utf,no_auto_possess
1596    >\x{2028}\x{0b}
1597
1598/^>[\p{Xsp}]+/utf,no_auto_possess
1599    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1600
1601/^>\p{Xps}/utf
1602    >\x{1680}\x{2028}\x{0b}
1603    >\x{a0}
1604\= Expect no match
1605    \x{0b}
1606
1607/^>\p{Xps}+/utf
1608    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1609
1610/^>\p{Xps}+?/utf
1611    >\x{1680}\x{2028}\x{0b}
1612
1613/^>\p{Xps}*/utf
1614    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1615
1616/^>\p{Xps}{2,9}/utf
1617    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1618
1619/^>\p{Xps}{2,9}?/utf
1620    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1621
1622/^>[\p{Xps}]/utf
1623    >\x{2028}\x{0b}
1624
1625/^>[\p{Xps}]+/utf
1626    > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1627
1628/^\p{Xwd}/utf
1629    ABCD
1630    1234
1631    \x{6ca}
1632    \x{a6c}
1633    \x{10a7}
1634    _ABC
1635\= Expect no match
1636    []
1637
1638/^\p{Xwd}+/utf
1639    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1640
1641/^\p{Xwd}*/utf
1642    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1643
1644/^\p{Xwd}{2,9}/utf
1645    A_12\x{6ca}\x{a6c}\x{10a7}
1646
1647/^[\p{Xwd}]/utf
1648    ABCD1234_
1649    1234abcd_
1650    \x{6ca}
1651    \x{a6c}
1652    \x{10a7}
1653    _ABC
1654\= Expect no match
1655    []
1656
1657/^[\p{Xwd}]+/utf
1658    ABCD1234\x{6ca}\x{a6c}\x{10a7}_
1659
1660# Unicode properties for \b abd \B
1661
1662/\b...\B/utf,ucp
1663    abc_
1664    \x{37e}abc\x{376}
1665    \x{37e}\x{376}\x{371}\x{393}\x{394}
1666    !\x{c0}++\x{c1}\x{c2}
1667    !\x{c0}+++++
1668
1669# Without PCRE_UCP, non-ASCII always fail, even if < 256
1670
1671/\b...\B/utf
1672    abc_
1673\= Expect no match
1674    \x{37e}abc\x{376}
1675    \x{37e}\x{376}\x{371}\x{393}\x{394}
1676    !\x{c0}++\x{c1}\x{c2}
1677    !\x{c0}+++++
1678
1679# With PCRE_UCP, non-UTF8 chars that are < 256 still check properties
1680
1681/\b...\B/ucp
1682    abc_
1683    !\x{c0}++\x{c1}\x{c2}
1684    !\x{c0}+++++
1685
1686# Caseless single negated characters > 127 need UCP support
1687
1688/[^\x{100}]/i,utf
1689    \x{100}\x{101}X
1690
1691/[^\x{100}]+/i,utf
1692    \x{100}\x{101}XX
1693
1694/^\X/utf
1695    A\=ps
1696    A\=ph
1697    A\x{300}\x{301}\=ps
1698    A\x{300}\x{301}\=ph
1699    A\x{301}\=ps
1700    A\x{301}\=ph
1701
1702/^\X{2,3}/utf
1703    A\=ps
1704    A\=ph
1705    AA\=ps
1706    AA\=ph
1707    A\x{300}\x{301}\=ps
1708    A\x{300}\x{301}\=ph
1709    A\x{300}\x{301}A\x{300}\x{301}\=ps
1710    A\x{300}\x{301}A\x{300}\x{301}\=ph
1711
1712/^\X{2}/utf
1713    AA\=ps
1714    AA\=ph
1715    A\x{300}\x{301}A\x{300}\x{301}\=ps
1716    A\x{300}\x{301}A\x{300}\x{301}\=ph
1717
1718/^\X+/utf
1719    AA\=ps
1720    AA\=ph
1721
1722/^\X+?Z/utf
1723    AA\=ps
1724    AA\=ph
1725
1726# These are tests for extended grapheme clusters
1727
1728/^\X/utf,aftertext
1729    G\x{34e}\x{34e}X
1730    \x{34e}\x{34e}X
1731    \x04X
1732    \x{1100}X
1733    \x{1100}\x{34e}X
1734    \x{1b04}\x{1b04}X
1735\= These match up to the roman letters
1736    \x{1111}\x{1111}L,L
1737    \x{1111}\x{1111}\x{1169}L,L,V
1738    \x{1111}\x{ae4c}L, LV
1739    \x{1111}\x{ad89}L, LVT
1740    \x{1111}\x{ae4c}\x{1169}L, LV, V
1741    \x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
1742    \x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
1743    \x{1111}\x{ad89}\x{11fe}L, LVT, T
1744    \x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
1745    \x{ad89}\x{11fe}\x{11fe}LVT, T, T
1746\= These match just the first codepoint (invalid sequence)
1747    \x{1111}\x{11fe}L, T
1748    \x{ae4c}\x{1111}LV, L
1749    \x{ae4c}\x{ae4c}LV, LV
1750    \x{ae4c}\x{ad89}LV, LVT
1751    \x{1169}\x{1111}V, L
1752    \x{1169}\x{ae4c}V, LV
1753    \x{1169}\x{ad89}V, LVT
1754    \x{ad89}\x{1111}LVT, L
1755    \x{ad89}\x{1169}LVT, V
1756    \x{ad89}\x{ae4c}LVT, LV
1757    \x{ad89}\x{ad89}LVT, LVT
1758    \x{11fe}\x{1111}T, L
1759    \x{11fe}\x{1169}T, V
1760    \x{11fe}\x{ae4c}T, LV
1761    \x{11fe}\x{ad89}T, LVT
1762\= Test extend and spacing mark
1763    \x{1111}\x{ae4c}\x{0711}L, LV, extend
1764    \x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
1765    \x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
1766\= Test CR, LF, and control
1767    \x0d\x{0711}CR, extend
1768    \x0d\x{1b04}CR, spacingmark
1769    \x0a\x{0711}LF, extend
1770    \x0a\x{1b04}LF, spacingmark
1771    \x0b\x{0711}Control, extend
1772    \x09\x{1b04}Control, spacingmark
1773\= There are no Prepend characters, so we can't test Prepend, CR
1774
1775/^(?>\X{2})X/utf,aftertext
1776    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1777
1778/^\X{2,4}X/utf,aftertext
1779    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1780    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1781    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1782
1783/^\X{2,4}?X/utf,aftertext
1784    \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1785    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1786    \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
1787
1788/\x{1e9e}+/i,utf
1789    \x{1e9e}\x{00df}
1790
1791/[z\x{1e9e}]+/i,utf
1792    \x{1e9e}\x{00df}
1793
1794/\x{00df}+/i,utf
1795    \x{1e9e}\x{00df}
1796
1797/[z\x{00df}]+/i,utf
1798    \x{1e9e}\x{00df}
1799
1800/\x{1f88}+/i,utf
1801    \x{1f88}\x{1f80}
1802
1803/[z\x{1f88}]+/i,utf
1804    \x{1f88}\x{1f80}
1805
1806# Perl matches these
1807
1808/\x{00b5}+/i,utf
1809    \x{00b5}\x{039c}\x{03bc}
1810
1811/\x{039c}+/i,utf
1812    \x{00b5}\x{039c}\x{03bc}
1813
1814/\x{03bc}+/i,utf
1815    \x{00b5}\x{039c}\x{03bc}
1816
1817
1818/\x{00c5}+/i,utf
1819    \x{00c5}\x{00e5}\x{212b}
1820
1821/\x{00e5}+/i,utf
1822    \x{00c5}\x{00e5}\x{212b}
1823
1824/\x{212b}+/i,utf
1825    \x{00c5}\x{00e5}\x{212b}
1826
1827/\x{01c4}+/i,utf
1828    \x{01c4}\x{01c5}\x{01c6}
1829
1830/\x{01c5}+/i,utf
1831    \x{01c4}\x{01c5}\x{01c6}
1832
1833/\x{01c6}+/i,utf
1834    \x{01c4}\x{01c5}\x{01c6}
1835
1836/\x{01c7}+/i,utf
1837    \x{01c7}\x{01c8}\x{01c9}
1838
1839/\x{01c8}+/i,utf
1840    \x{01c7}\x{01c8}\x{01c9}
1841
1842/\x{01c9}+/i,utf
1843    \x{01c7}\x{01c8}\x{01c9}
1844
1845
1846/\x{01ca}+/i,utf
1847    \x{01ca}\x{01cb}\x{01cc}
1848
1849/\x{01cb}+/i,utf
1850    \x{01ca}\x{01cb}\x{01cc}
1851
1852/\x{01cc}+/i,utf
1853    \x{01ca}\x{01cb}\x{01cc}
1854
1855/\x{01f1}+/i,utf
1856    \x{01f1}\x{01f2}\x{01f3}
1857
1858/\x{01f2}+/i,utf
1859    \x{01f1}\x{01f2}\x{01f3}
1860
1861/\x{01f3}+/i,utf
1862    \x{01f1}\x{01f2}\x{01f3}
1863
1864/\x{0345}+/i,utf
1865    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1866
1867/\x{0399}+/i,utf
1868    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1869
1870/\x{03b9}+/i,utf
1871    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1872
1873/\x{1fbe}+/i,utf
1874    \x{0345}\x{0399}\x{03b9}\x{1fbe}
1875
1876/\x{0392}+/i,utf
1877    \x{0392}\x{03b2}\x{03d0}
1878
1879/\x{03b2}+/i,utf
1880    \x{0392}\x{03b2}\x{03d0}
1881
1882/\x{03d0}+/i,utf
1883    \x{0392}\x{03b2}\x{03d0}
1884
1885
1886/\x{0395}+/i,utf
1887    \x{0395}\x{03b5}\x{03f5}
1888
1889/\x{03b5}+/i,utf
1890    \x{0395}\x{03b5}\x{03f5}
1891
1892/\x{03f5}+/i,utf
1893    \x{0395}\x{03b5}\x{03f5}
1894
1895/\x{0398}+/i,utf
1896    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1897
1898/\x{03b8}+/i,utf
1899    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1900
1901/\x{03d1}+/i,utf
1902    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1903
1904/\x{03f4}+/i,utf
1905    \x{0398}\x{03b8}\x{03d1}\x{03f4}
1906
1907/\x{039a}+/i,utf
1908    \x{039a}\x{03ba}\x{03f0}
1909
1910/\x{03ba}+/i,utf
1911    \x{039a}\x{03ba}\x{03f0}
1912
1913/\x{03f0}+/i,utf
1914    \x{039a}\x{03ba}\x{03f0}
1915
1916/\x{03a0}+/i,utf
1917    \x{03a0}\x{03c0}\x{03d6}
1918
1919/\x{03c0}+/i,utf
1920    \x{03a0}\x{03c0}\x{03d6}
1921
1922/\x{03d6}+/i,utf
1923    \x{03a0}\x{03c0}\x{03d6}
1924
1925/\x{03a1}+/i,utf
1926    \x{03a1}\x{03c1}\x{03f1}
1927
1928/\x{03c1}+/i,utf
1929    \x{03a1}\x{03c1}\x{03f1}
1930
1931/\x{03f1}+/i,utf
1932    \x{03a1}\x{03c1}\x{03f1}
1933
1934/\x{03a3}+/i,utf
1935    \x{03A3}\x{03C2}\x{03C3}
1936
1937/\x{03c2}+/i,utf
1938    \x{03A3}\x{03C2}\x{03C3}
1939
1940/\x{03c3}+/i,utf
1941    \x{03A3}\x{03C2}\x{03C3}
1942
1943/\x{03a6}+/i,utf
1944    \x{03a6}\x{03c6}\x{03d5}
1945
1946/\x{03c6}+/i,utf
1947    \x{03a6}\x{03c6}\x{03d5}
1948
1949/\x{03d5}+/i,utf
1950    \x{03a6}\x{03c6}\x{03d5}
1951
1952/\x{03c9}+/i,utf
1953    \x{03c9}\x{03a9}\x{2126}
1954
1955/\x{03a9}+/i,utf
1956    \x{03c9}\x{03a9}\x{2126}
1957
1958/\x{2126}+/i,utf
1959    \x{03c9}\x{03a9}\x{2126}
1960
1961/\x{1e60}+/i,utf
1962    \x{1e60}\x{1e61}\x{1e9b}
1963
1964/\x{1e61}+/i,utf
1965    \x{1e60}\x{1e61}\x{1e9b}
1966
1967/\x{1e9b}+/i,utf
1968    \x{1e60}\x{1e61}\x{1e9b}
1969
1970/\x{1e9e}+/i,utf
1971    \x{1e9e}\x{00df}
1972
1973/\x{00df}+/i,utf
1974    \x{1e9e}\x{00df}
1975
1976/\x{1f88}+/i,utf
1977    \x{1f88}\x{1f80}
1978
1979/\x{1f80}+/i,utf
1980    \x{1f88}\x{1f80}
1981
1982/\x{004b}+/i,utf
1983    \x{004b}\x{006b}\x{212a}
1984
1985/\x{006b}+/i,utf
1986    \x{004b}\x{006b}\x{212a}
1987
1988/\x{212a}+/i,utf
1989    \x{004b}\x{006b}\x{212a}
1990
1991/\x{0053}+/i,utf
1992    \x{0053}\x{0073}\x{017f}
1993
1994/\x{0073}+/i,utf
1995    \x{0053}\x{0073}\x{017f}
1996
1997/\x{017f}+/i,utf
1998    \x{0053}\x{0073}\x{017f}
1999
2000/ist/i,utf
2001\= Expect no match
2002    ikt
2003
2004/is+t/i,utf
2005    iSs\x{17f}t
2006\= Expect no match
2007    ikt
2008
2009/is+?t/i,utf
2010\= Expect no match
2011    ikt
2012
2013/is?t/i,utf
2014\= Expect no match
2015    ikt
2016
2017/is{2}t/i,utf
2018\= Expect no match
2019    iskt
2020
2021/^\p{Xuc}/utf
2022    $abc
2023    @abc
2024    `abc
2025    \x{1234}abc
2026\= Expect no match
2027    abc
2028
2029/^\p{Xuc}+/utf
2030    $@`\x{a0}\x{1234}\x{e000}**
2031\= Expect no match
2032    \x{9f}
2033
2034/^\p{Xuc}+?/utf
2035    $@`\x{a0}\x{1234}\x{e000}**
2036\= Expect no match
2037    \x{9f}
2038
2039/^\p{Xuc}+?\*/utf
2040    $@`\x{a0}\x{1234}\x{e000}**
2041\= Expect no match
2042    \x{9f}
2043
2044/^\p{Xuc}++/utf
2045    $@`\x{a0}\x{1234}\x{e000}**
2046\= Expect no match
2047    \x{9f}
2048
2049/^\p{Xuc}{3,5}/utf
2050    $@`\x{a0}\x{1234}\x{e000}**
2051\= Expect no match
2052    \x{9f}
2053
2054/^\p{Xuc}{3,5}?/utf
2055    $@`\x{a0}\x{1234}\x{e000}**
2056\= Expect no match
2057    \x{9f}
2058
2059/^[\p{Xuc}]/utf
2060    $@`\x{a0}\x{1234}\x{e000}**
2061\= Expect no match
2062    \x{9f}
2063
2064/^[\p{Xuc}]+/utf
2065    $@`\x{a0}\x{1234}\x{e000}**
2066\= Expect no match
2067    \x{9f}
2068
2069/^\P{Xuc}/utf
2070    abc
2071\= Expect no match
2072    $abc
2073    @abc
2074    `abc
2075    \x{1234}abc
2076
2077/^[\P{Xuc}]/utf
2078    abc
2079\= Expect no match
2080    $abc
2081    @abc
2082    `abc
2083    \x{1234}abc
2084
2085/^A\s+Z/utf,ucp
2086    A\x{2005}Z
2087    A\x{85}\x{180e}\x{2005}Z
2088
2089/^A[\s]+Z/utf,ucp
2090    A\x{2005}Z
2091    A\x{85}\x{180e}\x{2005}Z
2092
2093/(?<=\x{100})\x{200}(?=\x{300})/utf,allusedtext
2094    \x{100}\x{200}\x{300}
2095
2096# End of testinput7
2097