tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

regexp.js (1436B)


      1 function toLatin1(s) {
      2    assertEq(isLatin1(s), true);
      3    return s;
      4 }
      5 
      6 // Latin1
      7 var re = new RegExp(toLatin1("foo[bB]a\\r"), toLatin1("im"));
      8 assertEq(isLatin1(re.source), true);
      9 assertEq(re.source, "foo[bB]a\\r");
     10 assertEq(re.multiline, true);
     11 assertEq(re.ignoreCase, true);
     12 assertEq(re.sticky, false);
     13 
     14 // TwoByte
     15 re = new RegExp("foo[bB]a\\r\u1200", "im");
     16 assertEq(isLatin1(re.source), false);
     17 assertEq(re.source, "foo[bB]a\\r\u1200");
     18 assertEq(re.multiline, true);
     19 assertEq(re.ignoreCase, true);
     20 assertEq(re.sticky, false);
     21 
     22 re = /b[aA]r/;
     23 
     24 // Latin1
     25 assertEq(toLatin1("foobAr1234").search(re), 3);
     26 assertEq(toLatin1("bar1234").search(re), 0);
     27 assertEq(toLatin1("foobbr1234").search(re), -1);
     28 
     29 // TwoByte
     30 assertEq("foobAr1234\u1200".search(re), 3);
     31 assertEq("bar1234\u1200".search(re), 0);
     32 assertEq("foobbr1234\u1200".search(re), -1);
     33 
     34 re = /abcdefghijklm[0-5]/;
     35 assertEq(toLatin1("1abcdefghijklm4").search(re), 1);
     36 assertEq("\u12001abcdefghijklm0".search(re), 2);
     37 assertEq(toLatin1("1abcdefghijklm8").search(re), -1);
     38 assertEq("\u12001abcdefghijklm8".search(re), -1);
     39 
     40 // If the input is Latin1, case-independent matches should work
     41 // correctly for characters outside Latin1 with Latin1 equivalents.
     42 var s = toLatin1("foobar\xff5baz");
     43 assertEq(s.search(/bar\u0178\d/i), 3);
     44 
     45 // Bug 1032067.
     46 ''.match(eval("/(:[aaaaa\cC]\u1200)(?:\S|(?=(\3)))+?/y"));
     47 assertEq(Function("return /(\uB0DA()})/.toString();")(), "/(\uB0DA()})/");