/-- This set of tests checks the API, internals, and non-Perl stuff for UTF-8 support, excluding Unicode properties. --/ /\x{100}/8DZ /\x{1000}/8DZ /\x{10000}/8DZ /\x{100000}/8DZ /\x{1000000}/8DZ /\x{4000000}/8DZ /\x{7fffFFFF}/8DZ /[\x{ff}]/8DZ /[\x{100}]/8DZ /\x{ffffffff}/8 /\x{100000000}/8 /^\x{100}a\x{1234}/8 \x{100}a\x{1234}bcd /\x80/8DZ /\xff/8DZ /\x{0041}\x{2262}\x{0391}\x{002e}/DZ8 \x{0041}\x{2262}\x{0391}\x{002e} /\x{D55c}\x{ad6d}\x{C5B4}/DZ8 \x{D55c}\x{ad6d}\x{C5B4} /\x{65e5}\x{672c}\x{8a9e}/DZ8 \x{65e5}\x{672c}\x{8a9e} /\x{80}/DZ8 /\x{084}/DZ8 /\x{104}/DZ8 /\x{861}/DZ8 /\x{212ab}/DZ8 /.{3,5}X/DZ8 \x{212ab}\x{212ab}\x{212ab}\x{861}X /.{3,5}?/DZ8 \x{212ab}\x{212ab}\x{212ab}\x{861} /(?<=\C)X/8 Should produce an error diagnostic /-- This one is here not because it's different to Perl, but because the way the captured single-byte is displayed. (In Perl it becomes a character, and you can't tell the difference.) --/ /X(\C)(.*)/8 X\x{1234} X\nabc /-- This one is here because Perl gives out a grumbly error message (quite correctly, but that messes up comparisons). --/ /a\Cb/8 *** Failers a\x{100}b /^[ab]/8DZ bar *** Failers c \x{ff} \x{100} /^[^ab]/8DZ c \x{ff} \x{100} *** Failers aaa /[^ab\xC0-\xF0]/8SDZ \x{f1} \x{bf} \x{100} \x{1000} *** Failers \x{c0} \x{f0} /Ā{3,4}/8SDZ \x{100}\x{100}\x{100}\x{100\x{100} /(\x{100}+|x)/8SDZ /(\x{100}*a|x)/8SDZ /(\x{100}{0,2}a|x)/8SDZ /(\x{100}{1,2}a|x)/8SDZ /\x{100}*(\d+|"(?1)")/8 1234 "1234" \x{100}1234 "\x{100}1234" \x{100}\x{100}12ab \x{100}\x{100}"12" *** Failers \x{100}\x{100}abcd /\x{100}/8DZ /\x{100}*/8DZ /a\x{100}*/8DZ /ab\x{100}*/8DZ /a\x{100}\x{101}*/8DZ /a\x{100}\x{101}+/8DZ /\x{100}*A/8DZ A /\x{100}*\d(?R)/8DZ /[^\x{c4}]/DZ /[^\x{c4}]/8DZ /[\x{100}]/8DZ \x{100} Z\x{100} \x{100}Z *** Failers /[Z\x{100}]/8DZ Z\x{100} \x{100} \x{100}Z *** Failers /[\x{200}-\x{100}]/8 /[Ā-Ą]/8 \x{100} \x{104} *** Failers \x{105} \x{ff} /[z-\x{100}]/8DZ /[z\Qa-d]Ā\E]/8DZ \x{100} Ā /[\xFF]/DZ >\xff< /[\xff]/DZ8 >\x{ff}< /[^\xFF]/DZ /[^\xff]/8DZ /[Ä-Ü]/8 Ö # Matches without Study \x{d6} /[Ä-Ü]/8S Ö <-- Same with Study \x{d6} /[\x{c4}-\x{dc}]/8 Ö # Matches without Study \x{d6} /[\x{c4}-\x{dc}]/8S Ö <-- Same with Study \x{d6} /[]/8 //8 /xxx/8 /xxx/8?DZSS /abc/8 ] \? \xe1\x88 \P\xe1\x88 \P\P\xe1\x88 XX\xea \O0XX\xea \O1XX\xea \O2XX\xea XX\xf1 XX\xf8 XX\xfc ZZ\xea\xaf\x20YY ZZ\xfd\xbf\xbf\x2f\xbf\xbfYY ZZ\xfd\xbf\xbf\xbf\x2f\xbfYY ZZ\xfd\xbf\xbf\xbf\xbf\x2fYY ZZ\xffYY ZZ\xfeYY /anything/8 \xc0\x80 \xc1\x8f \xe0\x9f\x80 \xf0\x8f\x80\x80 \xf8\x87\x80\x80\x80 \xfc\x83\x80\x80\x80\x80 \xfe\x80\x80\x80\x80\x80 \xff\x80\x80\x80\x80\x80 \xc3\x8f \xe0\xaf\x80 \xe1\x80\x80 \xf0\x9f\x80\x80 \xf1\x8f\x80\x80 \xf8\x88\x80\x80\x80 \xf9\x87\x80\x80\x80 \xfc\x84\x80\x80\x80\x80 \xfd\x83\x80\x80\x80\x80 \?\xf8\x88\x80\x80\x80 \?\xf9\x87\x80\x80\x80 \?\xfc\x84\x80\x80\x80\x80 \?\xfd\x83\x80\x80\x80\x80 /\x{100}abc(xyz(?1))/8DZ /[^\x{100}]abc(xyz(?1))/8DZ /[ab\x{100}]abc(xyz(?1))/8DZ /(\x{100}(b(?2)c))?/DZ8 /(\x{100}(b(?2)c)){0,2}/DZ8 /(\x{100}(b(?1)c))?/DZ8 /(\x{100}(b(?1)c)){0,2}/DZ8 /\W/8 A.B A\x{100}B /\w/8 \x{100}X /a\x{1234}b/P8 a\x{1234}b /^\ሴ/8DZ /\777/I /\777/8I \x{1ff} \777 /\x{100}*\d/8DZ /\x{100}*\s/8DZ /\x{100}*\w/8DZ /\x{100}*\D/8DZ /\x{100}*\S/8DZ /\x{100}*\W/8DZ /\x{100}+\x{200}/8DZ /\x{100}+X/8DZ /X+\x{200}/8DZ /()()()()()()()()()() ()()()()()()()()()() ()()()()()()()()()() ()()()()()()()()()() A (x) (?41) B/8x AxxB /^[\x{100}\E-\Q\E\x{150}]/BZ8 /^[\QĀ\E-\QŐ\E]/BZ8 /^[\QĀ\E-\QŐ\E/BZ8 /^abc./mgx8 abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK /abc.$/mgx8 abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9 /^a\Rb/8 a\nb a\rb a\r\nb a\x0bb a\x0cb a\x{85}b a\x{2028}b a\x{2029}b ** Failers a\n\rb /^a\R*b/8 ab a\nb a\rb a\r\nb a\x0bb a\x0c\x{2028}\x{2029}b a\x{85}b a\n\rb a\n\r\x{85}\x0cb /^a\R+b/8 a\nb a\rb a\r\nb a\x0bb a\x0c\x{2028}\x{2029}b a\x{85}b a\n\rb a\n\r\x{85}\x0cb ** Failers ab /^a\R{1,3}b/8 a\nb a\n\rb a\n\r\x{85}b a\r\n\r\nb a\r\n\r\n\r\nb a\n\r\n\rb a\n\n\r\nb ** Failers a\n\n\n\rb a\r /\H\h\V\v/8 X X\x0a X\x09X\x0b ** Failers \x{a0} X\x0a /\H*\h+\V?\v{3,4}/8 \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a \x09\x20\x{a0}\x0a\x0b\x0c ** Failers \x09\x20\x{a0}\x0a\x0b /\H\h\V\v/8 \x{3001}\x{3000}\x{2030}\x{2028} X\x{180e}X\x{85} ** Failers \x{2009} X\x0a /\H*\h+\V?\v{3,4}/8 \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a \x09\x20\x{202f}\x0a\x0b\x0c ** Failers \x09\x{200a}\x{a0}\x{2028}\x0b /[\h]/8BZ >\x{1680} /[\h]{3,}/8BZ >\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}< /[\v]/8BZ /[\H]/8BZ /[\V]/8BZ /.*$/8 \x{1ec5} /-- This tests the stricter UTF-8 check according to RFC 3629. --/ /X/8 \x{0}\x{d7ff}\x{e000}\x{10ffff} \x{d800} \x{d800}\? \x{da00} \x{da00}\? \x{dfff} \x{dfff}\? \x{110000} \x{110000}\? \x{2000000} \x{2000000}\? \x{7fffffff} \x{7fffffff}\? /a\Rb/I8 a\rb a\nb a\r\nb ** Failers a\x{85}b a\x0bb /a\Rb/I8 a\rb a\nb a\r\nb a\x{85}b a\x0bb ** Failers a\x{85}b\ a\x0bb\ /a\R?b/I8 a\rb a\nb a\r\nb ** Failers a\x{85}b a\x0bb /a\R?b/I8 a\rb a\nb a\r\nb a\x{85}b a\x0bb ** Failers a\x{85}b\ a\x0bb\ /.*a.*=.b.*/8 QQQ\x{2029}ABCaXYZ=!bPQR ** Failers a\x{2029}b \x61\xe2\x80\xa9\x62 /[[:a\x{100}b:]]/8 /a[^]b/8 a\x{1234}b a\nb ** Failers ab /a[^]+b/8 aXb a\nX\nX\x{1234}b ** Failers ab /(\x{de})\1/ \x{de}\x{de} \x{123} /X/8f A\x{1ec5}ABCXYZ /(*UTF8)\x{1234}/ abcd\x{1234}pqr /(*CRLF)(*UTF8)(*BSR_UNICODE)a\Rb/I /Xa{2,4}b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /Xa{2,4}?b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /Xa{2,4}+b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /X\x{123}{2,4}b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X\x{123}{2,4}?b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X\x{123}{2,4}+b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X\x{123}{2,4}b/8 Xx\P X\x{123}x\P X\x{123}\x{123}x\P X\x{123}\x{123}\x{123}x\P X\x{123}\x{123}\x{123}\x{123}x\P /X\x{123}{2,4}?b/8 Xx\P X\x{123}x\P X\x{123}\x{123}x\P X\x{123}\x{123}\x{123}x\P X\x{123}\x{123}\x{123}\x{123}x\P /X\x{123}{2,4}+b/8 Xx\P X\x{123}x\P X\x{123}\x{123}x\P X\x{123}\x{123}\x{123}x\P X\x{123}\x{123}\x{123}\x{123}x\P /X\d{2,4}b/8 X\P X3\P X33\P X333\P X3333\P /X\d{2,4}?b/8 X\P X3\P X33\P X333\P X3333\P /X\d{2,4}+b/8 X\P X3\P X33\P X333\P X3333\P /X\D{2,4}b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /X\D{2,4}?b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /X\D{2,4}+b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /X\D{2,4}b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X\D{2,4}?b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X\D{2,4}+b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X[abc]{2,4}b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /X[abc]{2,4}?b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /X[abc]{2,4}+b/8 X\P Xa\P Xaa\P Xaaa\P Xaaaa\P /X[abc\x{123}]{2,4}b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X[abc\x{123}]{2,4}?b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X[abc\x{123}]{2,4}+b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X[^a]{2,4}b/8 X\P Xz\P Xzz\P Xzzz\P Xzzzz\P /X[^a]{2,4}?b/8 X\P Xz\P Xzz\P Xzzz\P Xzzzz\P /X[^a]{2,4}+b/8 X\P Xz\P Xzz\P Xzzz\P Xzzzz\P /X[^a]{2,4}b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X[^a]{2,4}?b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /X[^a]{2,4}+b/8 X\P X\x{123}\P X\x{123}\x{123}\P X\x{123}\x{123}\x{123}\P X\x{123}\x{123}\x{123}\x{123}\P /(Y)X\1{2,4}b/8 YX\P YXY\P YXYY\P YXYYY\P YXYYYY\P /(Y)X\1{2,4}?b/8 YX\P YXY\P YXYY\P YXYYY\P YXYYYY\P /(Y)X\1{2,4}+b/8 YX\P YXY\P YXYY\P YXYYY\P YXYYYY\P /(\x{123})X\1{2,4}b/8 \x{123}X\P \x{123}X\x{123}\P \x{123}X\x{123}\x{123}\P \x{123}X\x{123}\x{123}\x{123}\P \x{123}X\x{123}\x{123}\x{123}\x{123}\P /(\x{123})X\1{2,4}?b/8 \x{123}X\P \x{123}X\x{123}\P \x{123}X\x{123}\x{123}\P \x{123}X\x{123}\x{123}\x{123}\P \x{123}X\x{123}\x{123}\x{123}\x{123}\P /(\x{123})X\1{2,4}+b/8 \x{123}X\P \x{123}X\x{123}\P \x{123}X\x{123}\x{123}\P \x{123}X\x{123}\x{123}\x{123}\P \x{123}X\x{123}\x{123}\x{123}\x{123}\P /\bthe cat\b/8 the cat\P the cat\P\P /abcd*/8 xxxxabcd\P xxxxabcd\P\P /abcd*/i8 xxxxabcd\P xxxxabcd\P\P XXXXABCD\P XXXXABCD\P\P /abc\d*/8 xxxxabc1\P xxxxabc1\P\P /(a)bc\1*/8 xxxxabca\P xxxxabca\P\P /abc[de]*/8 xxxxabcde\P xxxxabcde\P\P /X\W{3}X/8 \PX /\h/SI /\h/SI8 ABC\x{09} ABC\x{20} ABC\x{a0} ABC\x{1680} ABC\x{180e} ABC\x{2000} ABC\x{202f} ABC\x{205f} ABC\x{3000} /\v/SI /\v/SI8 ABC\x{0a} ABC\x{0b} ABC\x{0c} ABC\x{0d} ABC\x{85} ABC\x{2028} /\R/SI /\R/SI8 /\h*A/SI8 CDBABC /\v+A/SI8 /\s?xxx\s/8SI /\sxxx\s/8T1 AB\x{85}xxx\x{a0}XYZ AB\x{a0}xxx\x{85}XYZ /\sxxx\s/I8ST1 AB\x{85}xxx\x{a0}XYZ AB\x{a0}xxx\x{85}XYZ /\S \S/8T1 \x{a2} \x{84} /\S \S/I8ST1 \x{a2} \x{84} A Z 'A#хц'8xBZ 'A#хц PQ'8xBZ /a+#хaa z#XX?/8xBZ /a+#хaa z#х?/8xBZ /\g{A}xxx#bXX(?'A'123) (?'A'456)/8xBZ /\g{A}xxx#bх(?'A'123) (?'A'456)/8xBZ /a+/8 a\x{123}aa\>1 a\x{123}aa\>2 a\x{123}aa\>3 a\x{123}aa\>4 a\x{123}aa\>5 a\x{123}aa\>6 /^\cģ/8 /(\R*)(.)/s8 \r\n \r\r\n\n\r \r\r\n\n\r\n /(\R)*(.)/s8 \r\n \r\r\n\n\r \r\r\n\n\r\n /\x{1234}+/iS8I /\x{1234}+?/iS8I /\x{1234}++/iS8I /\x{1234}{2}/iS8I /[^\x{1234}]+/iS8I /[^\x{1234}]+?/iS8I /[^\x{1234}]++/iS8I /[^\x{1234}]{2}/iS8I // /f.*/ \P\Pfor /f.*/s \P\Pfor /f.*/8 \P\Pfor /f.*/8s \P\Pfor /-- End of testinput5 --/