1 /-- This set of tests is run only with the 8-bit library. They do not require 2 UTF-8 or Unicode property support. The file starts with all the tests of 3 the POSIX interface, because that is supported only with the 8-bit library. 4 --/ 5 6 < forbid 8W 7 8 /abc/P 9 abc 10 *** Failers 11 12 /^abc|def/P 13 abcdef 14 abcdef\B 15 16 /.*((abc)$|(def))/P 17 defabc 18 \Zdefabc 19 20 /the quick brown fox/P 21 the quick brown fox 22 *** Failers 23 The Quick Brown Fox 24 25 /the quick brown fox/Pi 26 the quick brown fox 27 The Quick Brown Fox 28 29 /abc.def/P 30 *** Failers 31 abc\ndef 32 33 /abc$/P 34 abc 35 abc\n 36 37 /(abc)\2/P 38 39 /(abc\1)/P 40 abc 41 42 /a*(b+)(z)(z)/P 43 aaaabbbbzzzz 44 aaaabbbbzzzz\O0 45 aaaabbbbzzzz\O1 46 aaaabbbbzzzz\O2 47 aaaabbbbzzzz\O3 48 aaaabbbbzzzz\O4 49 aaaabbbbzzzz\O5 50 51 /ab.cd/P 52 ab-cd 53 ab=cd 54 ** Failers 55 ab\ncd 56 57 /ab.cd/Ps 58 ab-cd 59 ab=cd 60 ab\ncd 61 62 /a(b)c/PN 63 abc 64 65 /a(?P<name>b)c/PN 66 abc 67 68 /a?|b?/P 69 abc 70 ** Failers 71 ddd\N 72 73 /\w+A/P 74 CDAAAAB 75 76 /\w+A/PU 77 CDAAAAB 78 79 /\Biss\B/I+P 80 Mississippi 81 82 /abc/\P 83 84 /-- End of POSIX tests --/ 85 86 /a\Cb/ 87 aXb 88 a\nb 89 ** Failers (too big char) 90 A\x{123}B 91 A\o{443}B 92 93 /\x{100}/I 94 95 /\o{400}/I 96 97 / (?: [\040\t] | \( 98 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 99 \) )* # optional leading comment 100 (?: (?: 101 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 102 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 103 | 104 " (?: # opening quote... 105 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 106 | # or 107 \\ [^\x80-\xff] # Escaped something (something != CR) 108 )* " # closing quote 109 ) # initial word 110 (?: (?: [\040\t] | \( 111 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 112 \) )* \. (?: [\040\t] | \( 113 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 114 \) )* (?: 115 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 116 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 117 | 118 " (?: # opening quote... 119 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 120 | # or 121 \\ [^\x80-\xff] # Escaped something (something != CR) 122 )* " # closing quote 123 ) )* # further okay, if led by a period 124 (?: [\040\t] | \( 125 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 126 \) )* @ (?: [\040\t] | \( 127 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 128 \) )* (?: 129 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 130 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 131 | \[ # [ 132 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 133 \] # ] 134 ) # initial subdomain 135 (?: # 136 (?: [\040\t] | \( 137 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 138 \) )* \. # if led by a period... 139 (?: [\040\t] | \( 140 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 141 \) )* (?: 142 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 143 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 144 | \[ # [ 145 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 146 \] # ] 147 ) # ...further okay 148 )* 149 # address 150 | # or 151 (?: 152 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 153 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 154 | 155 " (?: # opening quote... 156 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 157 | # or 158 \\ [^\x80-\xff] # Escaped something (something != CR) 159 )* " # closing quote 160 ) # one word, optionally followed by.... 161 (?: 162 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... 163 \( 164 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 165 \) | # comments, or... 166 167 " (?: # opening quote... 168 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 169 | # or 170 \\ [^\x80-\xff] # Escaped something (something != CR) 171 )* " # closing quote 172 # quoted strings 173 )* 174 < (?: [\040\t] | \( 175 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 176 \) )* # leading < 177 (?: @ (?: [\040\t] | \( 178 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 179 \) )* (?: 180 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 181 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 182 | \[ # [ 183 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 184 \] # ] 185 ) # initial subdomain 186 (?: # 187 (?: [\040\t] | \( 188 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 189 \) )* \. # if led by a period... 190 (?: [\040\t] | \( 191 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 192 \) )* (?: 193 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 194 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 195 | \[ # [ 196 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 197 \] # ] 198 ) # ...further okay 199 )* 200 201 (?: (?: [\040\t] | \( 202 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 203 \) )* , (?: [\040\t] | \( 204 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 205 \) )* @ (?: [\040\t] | \( 206 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 207 \) )* (?: 208 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 209 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 210 | \[ # [ 211 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 212 \] # ] 213 ) # initial subdomain 214 (?: # 215 (?: [\040\t] | \( 216 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 217 \) )* \. # if led by a period... 218 (?: [\040\t] | \( 219 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 220 \) )* (?: 221 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 222 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 223 | \[ # [ 224 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 225 \] # ] 226 ) # ...further okay 227 )* 228 )* # further okay, if led by comma 229 : # closing colon 230 (?: [\040\t] | \( 231 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 232 \) )* )? # optional route 233 (?: 234 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 235 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 236 | 237 " (?: # opening quote... 238 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 239 | # or 240 \\ [^\x80-\xff] # Escaped something (something != CR) 241 )* " # closing quote 242 ) # initial word 243 (?: (?: [\040\t] | \( 244 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 245 \) )* \. (?: [\040\t] | \( 246 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 247 \) )* (?: 248 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 249 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 250 | 251 " (?: # opening quote... 252 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 253 | # or 254 \\ [^\x80-\xff] # Escaped something (something != CR) 255 )* " # closing quote 256 ) )* # further okay, if led by a period 257 (?: [\040\t] | \( 258 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 259 \) )* @ (?: [\040\t] | \( 260 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 261 \) )* (?: 262 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 263 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 264 | \[ # [ 265 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 266 \] # ] 267 ) # initial subdomain 268 (?: # 269 (?: [\040\t] | \( 270 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 271 \) )* \. # if led by a period... 272 (?: [\040\t] | \( 273 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 274 \) )* (?: 275 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 276 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 277 | \[ # [ 278 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 279 \] # ] 280 ) # ...further okay 281 )* 282 # address spec 283 (?: [\040\t] | \( 284 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 285 \) )* > # trailing > 286 # name and address 287 ) (?: [\040\t] | \( 288 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 289 \) )* # optional trailing comment 290 /xSI 291 292 /-- Although this saved pattern was compiled with link-size=2, it does no harm 293 to run this test with other link sizes because it is going to generated a 294 "compiled in wrong mode" error as soon as it is loaded, so the link size does 295 not matter. --/ 296 297 <!testsaved16 298 299 <!testsaved32 300 301 /\h/SI 302 303 /\H/SI 304 305 /\v/SI 306 307 /\V/SI 308 309 /\R/SI 310 311 /[\h]/BZ 312 >\x09< 313 314 /[\h]+/BZ 315 >\x09\x20\xa0< 316 317 /[\v]/BZ 318 319 /[\H]/BZ 320 321 /[^\h]/BZ 322 323 /[\V]/BZ 324 325 /[\x0a\V]/BZ 326 327 /\777/I 328 329 /(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF)XX/K 330 XX 331 332 /(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE)XX/K 333 XX 334 335 /\u0100/<JS> 336 337 /[\u0100-\u0200]/<JS> 338 339 /[^\x00-a]{12,}[^b-\xff]*/BZ 340 341 /[^\s]*\s* [^\W]+\W+ [^\d]*?\d0 [^\d\w]{4,6}?\w*A/BZ 342 343 /-- End of testinput14 --/ 344