pcre2/testdata/testinput4

2322 lines
42 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# This set of tests is for UTF support, including Unicode properties. The
# Unicode tests are all compatible with all versions of Perl >= 5.10, but
# some of the property tests may differ because of different versions of
# Unicode in use by PCRE2 and Perl.
#newline_default lf anycrlf any
#perltest
/a.b/utf
acb
a\x7fb
a\x{100}b
\= Expect no match
a\nb
/a(.{3})b/utf
a\x{4000}xyb
a\x{4000}\x7fyb
a\x{4000}\x{100}yb
\= Expect no match
a\x{4000}b
ac\ncb
/a(.*?)(.)/
a\xc0\x88b
/a(.*?)(.)/utf
a\x{100}b
/a(.*)(.)/
a\xc0\x88b
/a(.*)(.)/utf
a\x{100}b
/a(.)(.)/
a\xc0\x92bcd
/a(.)(.)/utf
a\x{240}bcd
/a(.?)(.)/
a\xc0\x92bcd
/a(.?)(.)/utf
a\x{240}bcd
/a(.??)(.)/
a\xc0\x92bcd
/a(.??)(.)/utf
a\x{240}bcd
/a(.{3})b/utf
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
\= Expect no match
a\x{1234}b
ac\ncb
/a(.{3,})b/utf
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
\= Expect no match
a\x{1234}b
/a(.{3,}?)b/utf
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
\= Expect no match
a\x{1234}b
/a(.{3,5})b/utf
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
axbxxbcdefghijb
axxxxxbcdefghijb
\= Expect no match
a\x{1234}b
axxxxxxbcdefghijb
/a(.{3,5}?)b/utf
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
axbxxbcdefghijb
axxxxxbcdefghijb
\= Expect no match
a\x{1234}b
axxxxxxbcdefghijb
/^[a\x{c0}]/utf
\= Expect no match
\x{100}
/(?<=aXb)cd/utf
aXbcd
/(?<=a\x{100}b)cd/utf
a\x{100}bcd
/(?<=a\x{100000}b)cd/utf
a\x{100000}bcd
/(?:\x{100}){3}b/utf
\x{100}\x{100}\x{100}b
\= Expect no match
\x{100}\x{100}b
/\x{ab}/utf
\x{ab}
\xc2\xab
\= Expect no match
\x00{ab}
/(?<=(.))X/utf
WXYZ
\x{256}XYZ
\= Expect no match
XYZ
/[^a]+/g,utf
bcd
\x{100}aY\x{256}Z
/^[^a]{2}/utf
\x{100}bc
/^[^a]{2,}/utf
\x{100}bcAa
/^[^a]{2,}?/utf
\x{100}bca
/[^a]+/gi,utf
bcd
\x{100}aY\x{256}Z
/^[^a]{2}/i,utf
\x{100}bc
/^[^a]{2,}/i,utf
\x{100}bcAa
/^[^a]{2,}?/i,utf
\x{100}bca
/\x{100}{0,0}/utf
abcd
/\x{100}?/utf
abcd
\x{100}\x{100}
/\x{100}{0,3}/utf
\x{100}\x{100}
\x{100}\x{100}\x{100}\x{100}
/\x{100}*/utf
abce
\x{100}\x{100}\x{100}\x{100}
/\x{100}{1,1}/utf
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}{1,3}/utf
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}+/utf
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}{3}/utf
abcd\x{100}\x{100}\x{100}XX
/\x{100}{3,5}/utf
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
/\x{100}{3,}/utf
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
/(?<=a\x{100}{2}b)X/utf,aftertext
Xyyya\x{100}\x{100}bXzzz
/\D*/utf
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\D*/utf
\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
/\D/utf
1X2
1\x{100}2
/>\S/utf
> >X Y
> >\x{100} Y
/\d/utf
\x{100}3
/\s/utf
\x{100} X
/\D+/utf
12abcd34
\= Expect no match
1234
/\D{2,3}/utf
12abcd34
12ab34
\= Expect no match
1234
12a34
/\D{2,3}?/utf
12abcd34
12ab34
\= Expect no match
1234
12a34
/\d+/utf
12abcd34
/\d{2,3}/utf
12abcd34
1234abcd
\= Expect no match
1.4
/\d{2,3}?/utf
12abcd34
1234abcd
\= Expect no match
1.4
/\S+/utf
12abcd34
\= Expect no match
\ \
/\S{2,3}/utf
12abcd34
1234abcd
\= Expect no match
\ \
/\S{2,3}?/utf
12abcd34
1234abcd
\= Expect no match
\ \
/>\s+</utf,aftertext
12> <34
/>\s{2,3}</utf,aftertext
ab> <cd
ab> <ce
\= Expect no match
ab> <cd
/>\s{2,3}?</utf,aftertext
ab> <cd
ab> <ce
\= Expect no match
ab> <cd
/\w+/utf
12 34
\= Expect no match
+++=*!
/\w{2,3}/utf
ab cd
abcd ce
\= Expect no match
a.b.c
/\w{2,3}?/utf
ab cd
abcd ce
\= Expect no match
a.b.c
/\W+/utf
12====34
\= Expect no match
abcd
/\W{2,3}/utf
ab====cd
ab==cd
\= Expect no match
a.b.c
/\W{2,3}?/utf
ab====cd
ab==cd
\= Expect no match
a.b.c
/[\x{100}]/utf
\x{100}
Z\x{100}
\x{100}Z
/[Z\x{100}]/utf
Z\x{100}
\x{100}
\x{100}Z
/[\x{100}\x{200}]/utf
ab\x{100}cd
ab\x{200}cd
/[\x{100}-\x{200}]/utf
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
/[z-\x{200}]/utf
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
abzcd
ab|cd
/[Q\x{100}\x{200}]/utf
ab\x{100}cd
ab\x{200}cd
Q?
/[Q\x{100}-\x{200}]/utf
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
Q?
/[Qz-\x{200}]/utf
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
abzcd
ab|cd
Q?
/[\x{100}\x{200}]{1,3}/utf
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
/[\x{100}\x{200}]{1,3}?/utf
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
/[Q\x{100}\x{200}]{1,3}/utf
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
/[Q\x{100}\x{200}]{1,3}?/utf
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
/(?<=[\x{100}\x{200}])X/utf
abc\x{200}X
abc\x{100}X
\= Expect no match
X
/(?<=[Q\x{100}\x{200}])X/utf
abc\x{200}X
abc\x{100}X
abQX
\= Expect no match
X
/(?<=[\x{100}\x{200}]{3})X/utf
abc\x{100}\x{200}\x{100}X
\= Expect no match
abc\x{200}X
X
/[^\x{100}\x{200}]X/utf
AX
\x{150}X
\x{500}X
\= Expect no match
\x{100}X
\x{200}X
/[^Q\x{100}\x{200}]X/utf
AX
\x{150}X
\x{500}X
\= Expect no match
\x{100}X
\x{200}X
QX
/[^\x{100}-\x{200}]X/utf
AX
\x{500}X
\= Expect no match
\x{100}X
\x{150}X
\x{200}X
/[z-\x{100}]/i,utf
z
Z
\x{100}
\= Expect no match
\x{102}
y
/[\xFF]/
>\xff<
/[\xff]/utf
>\x{ff}<
/[^\xFF]/
XYZ
/[^\xff]/utf
XYZ
\x{123}
/^[ac]*b/utf
\= Expect no match
xb
/^[ac\x{100}]*b/utf
\= Expect no match
xb
/^[^x]*b/i,utf
\= Expect no match
xb
/^[^x]*b/utf
\= Expect no match
xb
/^\d*b/utf
\= Expect no match
xb
/(|a)/g,utf
catac
a\x{256}a
/^\x{85}$/i,utf
\x{85}
/^ሴ/utf
/^\ሴ/utf
"(?s)(.{1,5})"utf
abcdefg
ab
/a*\x{100}*\w/utf
a
/\S\S/g,utf
A\x{a3}BC
/\S{2}/g,utf
A\x{a3}BC
/\W\W/g,utf
+\x{a3}==
/\W{2}/g,utf
+\x{a3}==
/\S/g,utf
\x{442}\x{435}\x{441}\x{442}
/[\S]/g,utf
\x{442}\x{435}\x{441}\x{442}
/\D/g,utf
\x{442}\x{435}\x{441}\x{442}
/[\D]/g,utf
\x{442}\x{435}\x{441}\x{442}
/\W/g,utf
\x{2442}\x{2435}\x{2441}\x{2442}
/[\W]/g,utf
\x{2442}\x{2435}\x{2441}\x{2442}
/[\S\s]*/utf
abc\n\r\x{442}\x{435}\x{441}\x{442}xyz
/[\x{41f}\S]/g,utf
\x{442}\x{435}\x{441}\x{442}
/.[^\S]./g,utf
abc def\x{442}\x{443}xyz\npqr
/.[^\S\n]./g,utf
abc def\x{442}\x{443}xyz\npqr
/[[:^alnum:]]/g,utf
+\x{2442}
/[[:^alpha:]]/g,utf
+\x{2442}
/[[:^ascii:]]/g,utf
A\x{442}
/[[:^blank:]]/g,utf
A\x{442}
/[[:^cntrl:]]/g,utf
A\x{442}
/[[:^digit:]]/g,utf
A\x{442}
/[[:^graph:]]/g,utf
\x19\x{e01ff}
/[[:^lower:]]/g,utf
A\x{422}
/[[:^print:]]/g,utf
\x{19}\x{e01ff}
/[[:^punct:]]/g,utf
A\x{442}
/[[:^space:]]/g,utf
A\x{442}
/[[:^upper:]]/g,utf
a\x{442}
/[[:^word:]]/g,utf
+\x{2442}
/[[:^xdigit:]]/g,utf
M\x{442}
/[^ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉƊƋƎƏƐƑƓƔƖƗƘƜƝƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫϒϓϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸԀԂԄԆԈԊԌԎԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸἈἉἊἋἌἍἎἏἘἙἚἛἜἝἨἩἪἫἬἭἮἯἸἹἺἻἼἽἾἿὈὉὊὋὌὍὙὛὝὟὨὩὪὫὬὭὮὯᾸᾹᾺΆῈΈῊΉῘῙῚΊῨῩῪΎῬῸΌῺΏabcdefghijklmnopqrstuvwxyzªµºßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżžſƀƃƅƈƌƍƒƕƙƚƛƞơƣƥƨƪƫƭưƴƶƹƺƽƾƿdžljnjǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳȴȵȶȷȸȹȼȿɀɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯΐάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϐϑϕϖϗϙϛϝϟϡϣϥϧϩϫϭϯϰϱϲϳϵϸϻϼабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹԁԃԅԇԉԋԍԏաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆևᴀᴁᴂᴃᴅᴆᴇᴈᴉᴊᴋᴌᴍᴎᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴝᴞᴟᴣᴤᴥᴧᴨᴩᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬᵭᵮᵯᵰᵱᵲᵳᵴᵵᵶᵷᵹᵺᵻᵼᵽᵾᵿᶀᶁᶂᶄᶅᶆᶇᶈᶉᶊᶋᶍᶎᶏᶐᶑᶒᶓᶔᶕᶖᶗᶘᶙᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕẖẗẘẙẚẛạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹἀἁἂἃἄἅἆἇἐἑἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀὁὂὃὄὅὐὑὒὓὔὕὖὗὠὡὢὣὤὥὦὧὰάὲέὴήὶίὸόὺύὼώᾀᾁᾂᾃᾄᾅᾆᾇᾐᾑᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷῂῃῄῆῇῐῑῒΐῖῗῠῡῢΰῤῥῦῧῲῳῴῶῷⲁⲃⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⴀⴁⴂⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌⴍⴎⴏⴐⴑⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜⴝⴞⴟⴠⴡⴢⴣⴤⴥfffiflffifflſtstﬓﬔﬕﬖﬗ\d_^]/utf
/^[^d]*?$/
abc
/^[^d]*?$/utf
abc
/^[^d]*?$/i
abc
/^[^d]*?$/i,utf
abc
/(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]/utf
/^[a\x{c0}]b/utf
\x{c0}b
/^([a\x{c0}]*?)aa/utf
a\x{c0}aaaa/
/^([a\x{c0}]*?)aa/utf
a\x{c0}aaaa/
a\x{c0}a\x{c0}aaa/
/^([a\x{c0}]*)aa/utf
a\x{c0}aaaa/
a\x{c0}a\x{c0}aaa/
/^([a\x{c0}]*)a\x{c0}/utf
a\x{c0}aaaa/
a\x{c0}a\x{c0}aaa/
/A*/g,utf
AAB\x{123}BAA
/(abc)\1/i,utf
\= Expect no match
abc
/(abc)\1/utf
\= Expect no match
abc
/a(*:a\x{1234}b)/utf,mark
abc
/a(*:a£b)/utf,mark
abc
# Noncharacters
/./utf
\x{fffe}
\x{ffff}
\x{1fffe}
\x{1ffff}
\x{2fffe}
\x{2ffff}
\x{3fffe}
\x{3ffff}
\x{4fffe}
\x{4ffff}
\x{5fffe}
\x{5ffff}
\x{6fffe}
\x{6ffff}
\x{7fffe}
\x{7ffff}
\x{8fffe}
\x{8ffff}
\x{9fffe}
\x{9ffff}
\x{afffe}
\x{affff}
\x{bfffe}
\x{bffff}
\x{cfffe}
\x{cffff}
\x{dfffe}
\x{dffff}
\x{efffe}
\x{effff}
\x{ffffe}
\x{fffff}
\x{10fffe}
\x{10ffff}
\x{fdd0}
\x{fdd1}
\x{fdd2}
\x{fdd3}
\x{fdd4}
\x{fdd5}
\x{fdd6}
\x{fdd7}
\x{fdd8}
\x{fdd9}
\x{fdda}
\x{fddb}
\x{fddc}
\x{fddd}
\x{fdde}
\x{fddf}
\x{fde0}
\x{fde1}
\x{fde2}
\x{fde3}
\x{fde4}
\x{fde5}
\x{fde6}
\x{fde7}
\x{fde8}
\x{fde9}
\x{fdea}
\x{fdeb}
\x{fdec}
\x{fded}
\x{fdee}
\x{fdef}
/^\d*\w{4}/utf
1234
\= Expect no match
123
/^[^b]*\w{4}/utf
aaaa
\= Expect no match
aaa
/^[^b]*\w{4}/i,utf
aaaa
\= Expect no match
aaa
/^\x{100}*.{4}/utf
\x{100}\x{100}\x{100}\x{100}
\= Expect no match
\x{100}\x{100}\x{100}
/^\x{100}*.{4}/i,utf
\x{100}\x{100}\x{100}\x{100}
\= Expect no match
\x{100}\x{100}\x{100}
/^a+[a\x{200}]/utf
aa
/^.\B.\B./utf
\x{10123}\x{10124}\x{10125}
/^#[^\x{ffff}]#[^\x{ffff}]#[^\x{ffff}]#/utf
#\x{10000}#\x{100}#\x{10ffff}#
# Unicode property support tests
/^\pC\pL\pM\pN\pP\pS\pZ</utf
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
\np\x{300}9!\$ <
\= Expect no match
ap\x{300}9!\$ <
/^\PC/utf
X
\= Expect no match
\x7f
/^\PL/utf
9
\= Expect no match
\x{c0}
/^\PM/utf
X
\= Expect no match
\x{30f}
/^\PN/utf
X
\= Expect no match
\x{660}
/^\PP/utf
X
\= Expect no match
\x{66c}
/^\PS/utf
X
\= Expect no match
\x{f01}
/^\PZ/utf
X
\= Expect no match
\x{1680}
/^\p{Cc}/utf
\x{017}
\x{09f}
\= Expect no match
\x{0600}
/^\p{Cf}/utf
\x{601}
\= Expect no match
\x{09f}
/^\p{Cn}/utf
\x{e0000}
\= Expect no match
\x{09f}
/^\p{Co}/utf
\x{f8ff}
\= Expect no match
\x{09f}
/^\p{Ll}/utf
a
\= Expect no match
Z
\x{e000}
/^\p{Lm}/utf
\x{2b0}
\= Expect no match
a
/^\p{Lo}/utf
\x{1bb}
\x{3400}
\x{3401}
\x{4d00}
\x{4db4}
\x{4db5}
\= Expect no match
a
\x{2b0}
\x{4db6}
/^\p{Lt}/utf
\x{1c5}
\= Expect no match
a
\x{2b0}
/^\p{Lu}/utf
A
\= Expect no match
\x{2b0}
/^\p{Mc}/utf
\x{903}
\= Expect no match
X
\x{300}
/^\p{Me}/utf
\x{488}
\= Expect no match
X
\x{903}
\x{300}
/^\p{Mn}/utf
\x{300}
\= Expect no match
X
\x{903}
/^\p{Nd}+/utf
0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
\x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
\x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
\= Expect no match
X
/^\p{Nl}/utf
\x{16ee}
\= Expect no match
X
\x{966}
/^\p{No}/utf
\x{b2}
\x{b3}
\= Expect no match
X
\x{16ee}
/^\p{Pc}/utf
\x5f
\x{203f}
\= Expect no match
X
-
\x{58a}
/^\p{Pd}/utf
-
\x{58a}
\= Expect no match
X
\x{203f}
/^\p{Pe}/utf
)
]
}
\x{f3b}
\= Expect no match
X
\x{203f}
(
[
{
\x{f3c}
/^\p{Pf}/utf
\x{bb}
\x{2019}
\= Expect no match
X
\x{203f}
/^\p{Pi}/utf
\x{ab}
\x{2018}
\= Expect no match
X
\x{203f}
/^\p{Po}/utf
!
\x{37e}
\= Expect no match
X
\x{203f}
/^\p{Ps}/utf
(
[
{
\x{f3c}
\= Expect no match
X
)
]
}
\x{f3b}
/^\p{Sk}/utf
\x{2c2}
\= Expect no match
X
\x{9f2}
/^\p{Sm}+/utf
+<|~\x{ac}\x{2044}
\= Expect no match
X
\x{9f2}
/^\p{So}/utf
\x{a6}
\x{482}
\= Expect no match
X
\x{9f2}
/^\p{Zl}/utf
\x{2028}
\= Expect no match
X
\x{2029}
/^\p{Zp}/utf
\x{2029}
\= Expect no match
X
\x{2028}
/\p{Nd}+(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}+?(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,}(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,}?(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}*(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}*?(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2}(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,3}(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,3}?(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}?(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}??(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(..)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(...)/utf
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(....)/utf
\= Expect no match
\x{660}\x{661}\x{662}ABC
/(?<=A\p{Nd})XYZ/utf
A2XYZ
123A5XYZPQR
ABA\x{660}XYZpqr
\= Expect no match
AXYZ
XYZ
/(?<!\pL)XYZ/utf
1XYZ
AB=XYZ..
XYZ
\= Expect no match
WXYZ
/[\P{Nd}]+/utf
abcd
\= Expect no match
1234
/\D+/utf
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\= Expect no match
11111111111111111111111111111111111111111111111111111111111111111111111
/\P{Nd}+/utf
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\= Expect no match
11111111111111111111111111111111111111111111111111111111111111111111111
/[\D]+/utf
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\= Expect no match
11111111111111111111111111111111111111111111111111111111111111111111111
/[\P{Nd}]+/utf
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\= Expect no match
11111111111111111111111111111111111111111111111111111111111111111111111
/[\D\P{Nd}]+/utf
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\= Expect no match
11111111111111111111111111111111111111111111111111111111111111111111111
/\pL/utf
a
A
/\pL/i,utf
a
A
/\p{Lu}/utf
A
aZ
\= Expect no match
abc
/\p{Ll}/utf
a
Az
\= Expect no match
ABC
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
\= Expect no match
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
/\x{391}+/i,utf
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
/\x{391}{3,5}(.)/i,utf
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
/\x{391}{3,5}?(.)/i,utf
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
/[\x{391}\x{ff3a}]/i,utf
\x{391}
\x{ff3a}
\x{3b1}
\x{ff5a}
/^(\X*)C/utf
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*?)C/utf
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*)(.)/utf
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*?)(.)/utf
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^\X(.)/utf
\= Expect no match
A\x{300}\x{301}\x{302}
/^\X{2,3}(.)/utf
A\x{300}\x{301}B\x{300}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
/^\X{2,3}?(.)/utf
A\x{300}\x{301}B\x{300}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
/^\X/utf
A
A\x{300}BC
A\x{300}\x{301}\x{302}BC
\x{300}
/^\p{Han}+/utf
\x{2e81}\x{3007}\x{2f804}\x{31a0}
\= Expect no match
\x{2e7f}
/^\P{Katakana}+/utf
\x{3105}
\= Expect no match
\x{30ff}
/^[\p{Arabic}]/utf
\x{06e9}
\x{060b}
\= Expect no match
X\x{06e9}
/^[\P{Yi}]/utf
\x{2f800}
\= Expect no match
\x{a014}
\x{a4c6}
/^\p{Any}X/utf
AXYZ
\x{1234}XYZ
\= Expect no match
X
/^\P{Any}X/utf
\= Expect no match
AX
/^\p{Any}?X/utf
XYZ
AXYZ
\x{1234}XYZ
\= Expect no match
ABXYZ
/^\P{Any}?X/utf
XYZ
\= Expect no match
AXYZ
\x{1234}XYZ
ABXYZ
/^\p{Any}+X/utf
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
\= Expect no match
XYZ
/^\P{Any}+X/utf
\= Expect no match
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
XYZ
/^\p{Any}*X/utf
XYZ
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
/^\P{Any}*X/utf
XYZ
\= Expect no match
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
/^[\p{Any}]X/utf
AXYZ
\x{1234}XYZ
\= Expect no match
X
/^[\P{Any}]X/utf
\= Expect no match
AX
/^[\p{Any}]?X/utf
XYZ
AXYZ
\x{1234}XYZ
\= Expect no match
ABXYZ
/^[\P{Any}]?X/utf
XYZ
\= Expect no match
AXYZ
\x{1234}XYZ
ABXYZ
/^[\p{Any}]+X/utf
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
\= Expect no match
XYZ
/^[\P{Any}]+X/utf
\= Expect no match
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
XYZ
/^[\p{Any}]*X/utf
XYZ
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
/^[\P{Any}]*X/utf
XYZ
\= Expect no match
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
/^\p{Any}{3,5}?/utf
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\p{Any}{3,5}/utf
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\P{Any}{3,5}?/utf
\= Expect no match
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\p{L&}X/utf
AXY
aXY
\x{1c5}XY
\= Expect no match
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]X/utf
AXY
aXY
\x{1c5}XY
\= Expect no match
\x{1bb}XY
\x{2b0}XY
!XY
/^\p{L&}+X/utf
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
\= Expect no match
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]+X/utf
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
\= Expect no match
\x{1bb}XY
\x{2b0}XY
!XY
/^\p{L&}+?X/utf
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
\= Expect no match
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]+?X/utf
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
\= Expect no match
\x{1bb}XY
\x{2b0}XY
!XY
/^\P{L&}X/utf
!XY
\x{1bb}XY
\x{2b0}XY
\= Expect no match
\x{1c5}XY
AXY
/^[\P{L&}]X/utf
!XY
\x{1bb}XY
\x{2b0}XY
\= Expect no match
\x{1c5}XY
AXY
/^(\p{Z}[^\p{C}\p{Z}]+)*$/
\xa0!
/^[\pL](abc)(?1)/
AabcabcYZ
/([\pL]=(abc))*X/
L=abcX
/^\p{Balinese}\p{Cuneiform}\p{Nko}\p{Phags_Pa}\p{Phoenician}/utf
\x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}
# Check property support in non-UTF mode
/\p{L}{4}/
123abcdefg
123abc\xc4\xc5zz
/\X{1,3}\d/
\= Expect no match
\x8aBCD
/\X?\d/
\= Expect no match
\x8aBCD
/\P{L}?\d/
\= Expect no match
\x8aBCD
/[\PPP\x8a]{1,}\x80/
A\x80
/^[\p{Arabic}]/utf
\x{604}
\x{60e}
\x{656}
\x{657}
\x{658}
\x{659}
\x{65a}
\x{65b}
\x{65c}
\x{65d}
\x{65e}
\x{65f}
\x{66a}
\x{6e9}
\x{6ef}
\x{6fa}
/^\p{Cyrillic}/utf
\x{1d2b}
/^\p{Common}/utf
\x{2116}
\x{1D183}
/^\p{Inherited}/utf
\x{200c}
\= Expect no match
\x{64a}
\x{656}
/^\p{Shavian}/utf
\x{10450}
\x{1047f}
/^\p{Deseret}/utf
\x{10400}
\x{1044f}
/^\p{Osmanya}/utf
\x{10480}
\x{1049d}
\x{104a0}
\x{104a9}
\= Expect no match
\x{1049e}
\x{1049f}
\x{104aa}
/\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
\x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
/\x{a77d}\x{1d79}/i,utf
\x{a77d}\x{1d79}
\x{1d79}\x{a77d}
/\x{a77d}\x{1d79}/utf
\x{a77d}\x{1d79}
\= Expect no match
\x{1d79}\x{a77d}
/(A)\1/i,utf
AA
Aa
aa
aA
/(\x{10a})\1/i,utf
\x{10a}\x{10a}
\x{10a}\x{10b}
\x{10b}\x{10b}
\x{10b}\x{10a}
# The next two tests are for property support in non-UTF mode
/(?:\p{Lu}|\x20)+/
\x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
/[\p{Lu}\x20]+/
\x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
/\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
\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}
/^\w+/utf,ucp
Az_\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
/^[[:xdigit:]]*/utf,ucp
1a\x{660}\x{bef}\x{16ee}
/^\d+/utf,ucp
1\x{660}\x{bef}\x{16ee}
/^[[:digit:]]+/utf,ucp
1\x{660}\x{bef}\x{16ee}
/^>\s+/utf,ucp
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
/^>\pZ+/utf,ucp
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
/^>[[:space:]]*/utf,ucp
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
/^>[[:blank:]]*/utf,ucp
>\x{20}\x{a0}\x{1680}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
/^[[:alpha:]]*/utf,ucp
Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}
/^[[:alnum:]]*/utf,ucp
Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
/^[[:cntrl:]]*/utf,ucp
\x{0}\x{09}\x{1f}\x{7f}\x{9f}
/^[[:graph:]]*/utf,ucp
A\x{a1}\x{a0}
/^[[:print:]]*/utf,ucp
A z\x{a0}\x{a1}
/^[[:punct:]]*/utf,ucp
.+\x{a1}\x{a0}
/\p{Zs}*?\R/
\= Expect no match
a\xFCb
/\p{Zs}*\R/
\= Expect no match
a\xFCb
/ⱥ/i,utf
Ⱥx
Ⱥ
/[ⱥ]/i,utf
Ⱥx
Ⱥ
/Ⱥ/i,utf
Ⱥ
# These are tests for extended grapheme clusters
/^\X/utf,aftertext
G\x{34e}\x{34e}X
\x{34e}\x{34e}X
\x04X
\x{1100}X
\x{1100}\x{34e}X
\x{1b04}\x{1b04}X
*These match up to the roman letters
\x{1111}\x{1111}L,L
\x{1111}\x{1111}\x{1169}L,L,V
\x{1111}\x{ae4c}L, LV
\x{1111}\x{ad89}L, LVT
\x{1111}\x{ae4c}\x{1169}L, LV, V
\x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
\x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
\x{1111}\x{ad89}\x{11fe}L, LVT, T
\x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
\x{ad89}\x{11fe}\x{11fe}LVT, T, T
*These match just the first codepoint (invalid sequence)
\x{1111}\x{11fe}L, T
\x{ae4c}\x{1111}LV, L
\x{ae4c}\x{ae4c}LV, LV
\x{ae4c}\x{ad89}LV, LVT
\x{1169}\x{1111}V, L
\x{1169}\x{ae4c}V, LV
\x{1169}\x{ad89}V, LVT
\x{ad89}\x{1111}LVT, L
\x{ad89}\x{1169}LVT, V
\x{ad89}\x{ae4c}LVT, LV
\x{ad89}\x{ad89}LVT, LVT
\x{11fe}\x{1111}T, L
\x{11fe}\x{1169}T, V
\x{11fe}\x{ae4c}T, LV
\x{11fe}\x{ad89}T, LVT
*Test extend and spacing mark
\x{1111}\x{ae4c}\x{0711}L, LV, extend
\x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
\x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
*Test CR, LF, and control
\x0d\x{0711}CR, extend
\x0d\x{1b04}CR, spacingmark
\x0a\x{0711}LF, extend
\x0a\x{1b04}LF, spacingmark
\x0b\x{0711}Control, extend
\x09\x{1b04}Control, spacingmark
*There are no Prepend characters, so we can't test Prepend, CR
/^(?>\X{2})X/utf,aftertext
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/^\X{2,4}X/utf,aftertext
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/^\X{2,4}?X/utf,aftertext
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/\X*Z/utf,no_start_optimize
\= Expect no match
A\x{300}
/\X*(.)/utf,no_start_optimize
A\x{1111}\x{ae4c}\x{1169}
# --------------------------------------------
/\x{1e9e}+/i,utf
\x{1e9e}\x{00df}
/[z\x{1e9e}]+/i,utf
\x{1e9e}\x{00df}
/\x{00df}+/i,utf
\x{1e9e}\x{00df}
/[z\x{00df}]+/i,utf
\x{1e9e}\x{00df}
/\x{1f88}+/i,utf
\x{1f88}\x{1f80}
/[z\x{1f88}]+/i,utf
\x{1f88}\x{1f80}
# Check a reference with more than one other case
/^(\x{00b5})\1{2}$/i,utf
\x{00b5}\x{039c}\x{03bc}
# Characters with more than one other case; test in classes
/[z\x{00b5}]+/i,utf
\x{00b5}\x{039c}\x{03bc}
/[z\x{039c}]+/i,utf
\x{00b5}\x{039c}\x{03bc}
/[z\x{03bc}]+/i,utf
\x{00b5}\x{039c}\x{03bc}
/[z\x{00c5}]+/i,utf
\x{00c5}\x{00e5}\x{212b}
/[z\x{00e5}]+/i,utf
\x{00c5}\x{00e5}\x{212b}
/[z\x{212b}]+/i,utf
\x{00c5}\x{00e5}\x{212b}
/[z\x{01c4}]+/i,utf
\x{01c4}\x{01c5}\x{01c6}
/[z\x{01c5}]+/i,utf
\x{01c4}\x{01c5}\x{01c6}
/[z\x{01c6}]+/i,utf
\x{01c4}\x{01c5}\x{01c6}
/[z\x{01c7}]+/i,utf
\x{01c7}\x{01c8}\x{01c9}
/[z\x{01c8}]+/i,utf
\x{01c7}\x{01c8}\x{01c9}
/[z\x{01c9}]+/i,utf
\x{01c7}\x{01c8}\x{01c9}
/[z\x{01ca}]+/i,utf
\x{01ca}\x{01cb}\x{01cc}
/[z\x{01cb}]+/i,utf
\x{01ca}\x{01cb}\x{01cc}
/[z\x{01cc}]+/i,utf
\x{01ca}\x{01cb}\x{01cc}
/[z\x{01f1}]+/i,utf
\x{01f1}\x{01f2}\x{01f3}
/[z\x{01f2}]+/i,utf
\x{01f1}\x{01f2}\x{01f3}
/[z\x{01f3}]+/i,utf
\x{01f1}\x{01f2}\x{01f3}
/[z\x{0345}]+/i,utf
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/[z\x{0399}]+/i,utf
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/[z\x{03b9}]+/i,utf
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/[z\x{1fbe}]+/i,utf
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/[z\x{0392}]+/i,utf
\x{0392}\x{03b2}\x{03d0}
/[z\x{03b2}]+/i,utf
\x{0392}\x{03b2}\x{03d0}
/[z\x{03d0}]+/i,utf
\x{0392}\x{03b2}\x{03d0}
/[z\x{0395}]+/i,utf
\x{0395}\x{03b5}\x{03f5}
/[z\x{03b5}]+/i,utf
\x{0395}\x{03b5}\x{03f5}
/[z\x{03f5}]+/i,utf
\x{0395}\x{03b5}\x{03f5}
/[z\x{0398}]+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/[z\x{03b8}]+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/[z\x{03d1}]+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/[z\x{03f4}]+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/[z\x{039a}]+/i,utf
\x{039a}\x{03ba}\x{03f0}
/[z\x{03ba}]+/i,utf
\x{039a}\x{03ba}\x{03f0}
/[z\x{03f0}]+/i,utf
\x{039a}\x{03ba}\x{03f0}
/[z\x{03a0}]+/i,utf
\x{03a0}\x{03c0}\x{03d6}
/[z\x{03c0}]+/i,utf
\x{03a0}\x{03c0}\x{03d6}
/[z\x{03d6}]+/i,utf
\x{03a0}\x{03c0}\x{03d6}
/[z\x{03a1}]+/i,utf
\x{03a1}\x{03c1}\x{03f1}
/[z\x{03c1}]+/i,utf
\x{03a1}\x{03c1}\x{03f1}
/[z\x{03f1}]+/i,utf
\x{03a1}\x{03c1}\x{03f1}
/[z\x{03a3}]+/i,utf
\x{03A3}\x{03C2}\x{03C3}
/[z\x{03c2}]+/i,utf
\x{03A3}\x{03C2}\x{03C3}
/[z\x{03c3}]+/i,utf
\x{03A3}\x{03C2}\x{03C3}
/[z\x{03a6}]+/i,utf
\x{03a6}\x{03c6}\x{03d5}
/[z\x{03c6}]+/i,utf
\x{03a6}\x{03c6}\x{03d5}
/[z\x{03d5}]+/i,utf
\x{03a6}\x{03c6}\x{03d5}
/[z\x{03c9}]+/i,utf
\x{03c9}\x{03a9}\x{2126}
/[z\x{03a9}]+/i,utf
\x{03c9}\x{03a9}\x{2126}
/[z\x{2126}]+/i,utf
\x{03c9}\x{03a9}\x{2126}
/[z\x{1e60}]+/i,utf
\x{1e60}\x{1e61}\x{1e9b}
/[z\x{1e61}]+/i,utf
\x{1e60}\x{1e61}\x{1e9b}
/[z\x{1e9b}]+/i,utf
\x{1e60}\x{1e61}\x{1e9b}
# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
/[z\x{004b}]+/i,utf
\x{004b}\x{006b}\x{212a}
/[z\x{006b}]+/i,utf
\x{004b}\x{006b}\x{212a}
/[z\x{212a}]+/i,utf
\x{004b}\x{006b}\x{212a}
/[z\x{0053}]+/i,utf
\x{0053}\x{0073}\x{017f}
/[z\x{0073}]+/i,utf
\x{0053}\x{0073}\x{017f}
/[z\x{017f}]+/i,utf
\x{0053}\x{0073}\x{017f}
# --------------------------------------
/(ΣΆΜΟΣ) \1/i,utf
ΣΆΜΟΣ ΣΆΜΟΣ
ΣΆΜΟΣ σάμος
σάμος σάμος
σάμος σάμοσ
σάμος ΣΆΜΟΣ
/(σάμος) \1/i,utf
ΣΆΜΟΣ ΣΆΜΟΣ
ΣΆΜΟΣ σάμος
σάμος σάμος
σάμος σάμοσ
σάμος ΣΆΜΟΣ
/(ΣΆΜΟΣ) \1*/i,utf
ΣΆΜΟΣ\x20
ΣΆΜΟΣ ΣΆΜΟΣσάμοςσάμος
# Perl matches these
/\x{00b5}+/i,utf
\x{00b5}\x{039c}\x{03bc}
/\x{039c}+/i,utf
\x{00b5}\x{039c}\x{03bc}
/\x{03bc}+/i,utf
\x{00b5}\x{039c}\x{03bc}
/\x{00c5}+/i,utf
\x{00c5}\x{00e5}\x{212b}
/\x{00e5}+/i,utf
\x{00c5}\x{00e5}\x{212b}
/\x{212b}+/i,utf
\x{00c5}\x{00e5}\x{212b}
/\x{01c4}+/i,utf
\x{01c4}\x{01c5}\x{01c6}
/\x{01c5}+/i,utf
\x{01c4}\x{01c5}\x{01c6}
/\x{01c6}+/i,utf
\x{01c4}\x{01c5}\x{01c6}
/\x{01c7}+/i,utf
\x{01c7}\x{01c8}\x{01c9}
/\x{01c8}+/i,utf
\x{01c7}\x{01c8}\x{01c9}
/\x{01c9}+/i,utf
\x{01c7}\x{01c8}\x{01c9}
/\x{01ca}+/i,utf
\x{01ca}\x{01cb}\x{01cc}
/\x{01cb}+/i,utf
\x{01ca}\x{01cb}\x{01cc}
/\x{01cc}+/i,utf
\x{01ca}\x{01cb}\x{01cc}
/\x{01f1}+/i,utf
\x{01f1}\x{01f2}\x{01f3}
/\x{01f2}+/i,utf
\x{01f1}\x{01f2}\x{01f3}
/\x{01f3}+/i,utf
\x{01f1}\x{01f2}\x{01f3}
/\x{0345}+/i,utf
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{0399}+/i,utf
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{03b9}+/i,utf
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{1fbe}+/i,utf
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{0392}+/i,utf
\x{0392}\x{03b2}\x{03d0}
/\x{03b2}+/i,utf
\x{0392}\x{03b2}\x{03d0}
/\x{03d0}+/i,utf
\x{0392}\x{03b2}\x{03d0}
/\x{0395}+/i,utf
\x{0395}\x{03b5}\x{03f5}
/\x{03b5}+/i,utf
\x{0395}\x{03b5}\x{03f5}
/\x{03f5}+/i,utf
\x{0395}\x{03b5}\x{03f5}
/\x{0398}+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03b8}+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03d1}+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03f4}+/i,utf
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{039a}+/i,utf
\x{039a}\x{03ba}\x{03f0}
/\x{03ba}+/i,utf
\x{039a}\x{03ba}\x{03f0}
/\x{03f0}+/i,utf
\x{039a}\x{03ba}\x{03f0}
/\x{03a0}+/i,utf
\x{03a0}\x{03c0}\x{03d6}
/\x{03c0}+/i,utf
\x{03a0}\x{03c0}\x{03d6}
/\x{03d6}+/i,utf
\x{03a0}\x{03c0}\x{03d6}
/\x{03a1}+/i,utf
\x{03a1}\x{03c1}\x{03f1}
/\x{03c1}+/i,utf
\x{03a1}\x{03c1}\x{03f1}
/\x{03f1}+/i,utf
\x{03a1}\x{03c1}\x{03f1}
/\x{03a3}+/i,utf
\x{03A3}\x{03C2}\x{03C3}
/\x{03c2}+/i,utf
\x{03A3}\x{03C2}\x{03C3}
/\x{03c3}+/i,utf
\x{03A3}\x{03C2}\x{03C3}
/\x{03a6}+/i,utf
\x{03a6}\x{03c6}\x{03d5}
/\x{03c6}+/i,utf
\x{03a6}\x{03c6}\x{03d5}
/\x{03d5}+/i,utf
\x{03a6}\x{03c6}\x{03d5}
/\x{03c9}+/i,utf
\x{03c9}\x{03a9}\x{2126}
/\x{03a9}+/i,utf
\x{03c9}\x{03a9}\x{2126}
/\x{2126}+/i,utf
\x{03c9}\x{03a9}\x{2126}
/\x{1e60}+/i,utf
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e61}+/i,utf
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e9b}+/i,utf
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e9e}+/i,utf
\x{1e9e}\x{00df}
/\x{00df}+/i,utf
\x{1e9e}\x{00df}
/\x{1f88}+/i,utf
\x{1f88}\x{1f80}
/\x{1f80}+/i,utf
\x{1f88}\x{1f80}
# Perl 5.12.4 gets these wrong, but 5.15.3 is OK
/\x{004b}+/i,utf
\x{004b}\x{006b}\x{212a}
/\x{006b}+/i,utf
\x{004b}\x{006b}\x{212a}
/\x{212a}+/i,utf
\x{004b}\x{006b}\x{212a}
/\x{0053}+/i,utf
\x{0053}\x{0073}\x{017f}
/\x{0073}+/i,utf
\x{0053}\x{0073}\x{017f}
/\x{017f}+/i,utf
\x{0053}\x{0073}\x{017f}
/^\p{Any}*\d{4}/utf
1234
\= Expect no match
123
/^\X*\w{4}/utf
1234
\= Expect no match
123
/^A\s+Z/utf,ucp
A\x{2005}Z
A\x{85}\x{2005}Z
/^A[\s]+Z/utf,ucp
A\x{2005}Z
A\x{85}\x{2005}Z
/^[[:graph:]]+$/utf,ucp
Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
\x{fff9}\x{fffa}\x{fffb}
\x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
\= Expect no match
\x{09}
\x{0a}
\x{1D}
\x{20}
\x{85}
\x{a0}
\x{1680}
\x{2028}
\x{2029}
\x{202f}
\x{2065}
\x{3000}
\x{e0002}
\x{e001f}
\x{e0080}
/^[[:print:]]+$/utf,ucp
Space: \x{a0}
\x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
\x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
\x{202f}\x{205f}
\x{3000}
Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{202f}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
\x{fff9}\x{fffa}\x{fffb}
\x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
\= Expect no match
\x{09}
\x{1D}
\x{85}
\x{2028}
\x{2029}
\x{2065}
\x{e0002}
\x{e001f}
\x{e0080}
/^[[:punct:]]+$/utf,ucp
\$+<=>^`|~
!\"#%&'()*,-./:;?@[\\]_{}
\x{a1}\x{a7}
\x{37e}
\= Expect no match
abcde
/^[[:^graph:]]+$/utf,ucp
\x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{1680}
\x{2028}\x{2029}\x{202f}\x{2065}
\x{3000}\x{e0002}\x{e001f}\x{e0080}
\= Expect no match
Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
\x{fff9}\x{fffa}\x{fffb}
\x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
/^[[:^print:]]+$/utf,ucp
\x{09}\x{1D}\x{85}\x{2028}\x{2029}\x{2065}
\x{e0002}\x{e001f}\x{e0080}
\= Expect no match
Space: \x{a0}
\x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
\x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
\x{202f}\x{205f}
\x{3000}
Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{202f}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
\x{fff9}\x{fffa}\x{fffb}
\x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
/^[[:^punct:]]+$/utf,ucp
abcde
\= Expect no match
\$+<=>^`|~
!\"#%&'()*,-./:;?@[\\]_{}
\x{a1}\x{a7}
\x{37e}
/[RST]+/i,utf,ucp
Ss\x{17f}
/[R-T]+/i,utf,ucp
Ss\x{17f}
/[q-u]+/i,utf,ucp
Ss\x{17f}
/^s?c/im,utf
scat
# The next four tests are for repeated caseless back references when the
# code unit length of the matched text is different to that of the original
# group in the UTF-8 case.
/^(\x{23a})\1*(.)/i,utf
\x{23a}\x{23a}\x{23a}\x{23a}
\x{23a}\x{2c65}\x{2c65}\x{2c65}
\x{23a}\x{23a}\x{2c65}\x{23a}
/^(\x{23a})\1*(..)/i,utf
\x{23a}\x{2c65}\x{2c65}\x{2c65}
\x{23a}\x{23a}\x{2c65}\x{23a}
/^(\x{23a})\1*(...)/i,utf
\x{23a}\x{2c65}\x{2c65}\x{2c65}
\x{23a}\x{23a}\x{2c65}\x{23a}
/^(\x{23a})\1*(....)/i,utf
\= Expect no match
\x{23a}\x{2c65}\x{2c65}\x{2c65}
\x{23a}\x{23a}\x{2c65}\x{23a}
/[A-`]/i,utf
abcdefghijklmno
"[\S\V\H]"utf
/[^\p{Any}]*+x/utf
x
/[[:punct:]]/utf,ucp
\x{b4}
/[[:^ascii:]]/utf,ucp
\x{100}
\x{200}
\x{300}
\x{37e}
\= Expect no match
aa
99
/[[:^ascii:]\w]/utf,ucp
aa
99
gg
\x{100}
\x{200}
\x{300}
\x{37e}
/[\w[:^ascii:]]/utf,ucp
aa
99
gg
\x{100}
\x{200}
\x{300}
\x{37e}
/[^[:ascii:]\W]/utf,ucp
\x{100}
\x{200}
\= Expect no match
aa
99
gg
\x{37e}
/[^[:^ascii:]\d]/utf,ucp
a
~
\a
\x{7f}
\= Expect no match
0
\x{389}
\x{20ac}
/(?=.*b)\pL/
11bb
/(?(?=.*b)(?=.*b)\pL|.*c)/
11bb
/^\x{123}+?$/utf,no_auto_possess
\x{123}\x{123}\x{123}
/^\x{123}+?$/i,utf,no_auto_possess
\x{123}\x{122}\x{123}
\= Expect no match
\x{123}\x{124}\x{123}
/\N{U+1234}/utf
\x{1234}
/[\N{U+1234}]/utf
\x{1234}
# Test the full list of Unicode "Pattern White Space" characters that are to
# be ignored by /x. The pattern lines below may show up oddly in text editors
# or when listed to the screen. Note that characters such as U+2002, which are
# matched as space by \h and \v are *not* "Pattern White Space".
/A…B/x,utf
AB
/AB/x,utf
A\x{2002}B
\= Expect no match
AB
# -------
/[^\x{100}-\x{ffff}]*[\x80-\xff]/utf
\x{99}\x{99}\x{99}
/[^\x{100}-\x{ffff}ABC]*[\x80-\xff]/utf
\x{99}\x{99}\x{99}
/[^\x{100}-\x{ffff}]*[\x80-\xff]/i,utf
\x{99}\x{99}\x{99}
# End of testinput4