tor-browser

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

non-unicode-property-names-valid.js (4241B)


      1 // Copyright (C) 2020 Apple Inc. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 author: Michael Saboff
      5 description: Exotic named group names in non-Unicode RegExps
      6 esid: prod-GroupSpecifier
      7 features: [regexp-named-groups]
      8 ---*/
      9 
     10 /*
     11 Valid ID_Start / ID_Continue Unicode characters
     12 
     13 𝑓  \u{1d453}  \ud835 \udc53
     14 π‘œ  \u{1d45c}  \ud835 \udc5c
     15 π‘₯  \u{id465}  \ud835 \udc65
     16 
     17 𝓓  \u{1d4d3}  \ud835 \udcd3
     18 𝓸  \u{1d4f8}  \ud835 \udcf8
     19 𝓰  \u{1d4f0}  \ud835 \udcf0
     20 
     21 𝓑  \u{1d4d1}  \ud835 \udcd1
     22 𝓻  \u{1d4fb}  \ud835 \udcfb
     23 𝓸  \u{1d4f8}  \ud835 \udcf8
     24 𝔀  \u{1d500}  \ud835 \udd00
     25 𝓷  \u{1d4f7}  \ud835 \udcf7
     26 
     27 𝖰  \u{1d5b0}  \ud835 \uddb0
     28 𝖑  \u{1d5a1}  \ud835 \udda1
     29 π–₯  \u{1d5a5}  \ud835 \udda5
     30 
     31 (fox) η‹Έ  \u{72f8}  \u72f8
     32 (dog) η‹—  \u{72d7}  \u72d7  
     33 
     34 Valid ID_Continue Unicode characters (Can't be first identifier character.)
     35 
     36 𝟚  \u{1d7da}  \ud835 \udfda
     37 */
     38 
     39 var string = "The quick brown fox jumped over the lazy dog's back";
     40 var string2 = "It is a dog eat dog world.";
     41 
     42 let match = null;
     43 
     44 assert.sameValue(string.match(/(?<animal>fox|dog)/).groups.animal, "fox");
     45 
     46 match = string.match(/(?<π‘“π‘œπ‘₯>fox).*(?<𝓓𝓸𝓰>dog)/);
     47 assert.sameValue(match.groups.π‘“π‘œπ‘₯, "fox");
     48 assert.sameValue(match.groups.𝓓𝓸𝓰, "dog");
     49 assert.sameValue(match[1], "fox");
     50 assert.sameValue(match[2], "dog");
     51 
     52 match = string.match(/(?<η‹Έ>fox).*(?<η‹—>dog)/);
     53 assert.sameValue(match.groups.η‹Έ, "fox");
     54 assert.sameValue(match.groups.η‹—, "dog");
     55 assert.sameValue(match[1], "fox");
     56 assert.sameValue(match[2], "dog");
     57 
     58 assert.sameValue(string.match(/(?<𝓑𝓻𝓸𝔀𝓷>brown)/).groups.𝓑𝓻𝓸𝔀𝓷, "brown");
     59 assert.sameValue(string.match(/(?<𝓑𝓻𝓸𝔀𝓷>brown)/).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown");
     60 assert.sameValue(string.match(/(?<\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}>brown)/).groups.𝓑𝓻𝓸𝔀𝓷, "brown");
     61 assert.sameValue(string.match(/(?<\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}>brown)/).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown");
     62 assert.sameValue(string.match(/(?<\ud835\udcd1\ud835\udcfb\ud835\udcf8\ud835\udd00\ud835\udcf7>brown)/).groups.𝓑𝓻𝓸𝔀𝓷, "brown");
     63 assert.sameValue(string.match(/(?<\ud835\udcd1\ud835\udcfb\ud835\udcf8\ud835\udd00\ud835\udcf7>brown)/).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown");
     64 
     65 assert.sameValue(string.match(/(?<𝖰𝖑π–₯>q\w*\W\w*\W\w*)/).groups.𝖰𝖑π–₯, "quick brown fox");
     66 assert.sameValue(string.match(/(?<𝖰𝖑\u{1d5a5}>q\w*\W\w*\W\w*)/).groups.𝖰𝖑π–₯, "quick brown fox");
     67 assert.sameValue(string.match(/(?<𝖰\u{1d5a1}π–₯>q\w*\W\w*\W\w*)/).groups.𝖰𝖑π–₯, "quick brown fox");
     68 assert.sameValue(string.match(/(?<𝖰\u{1d5a1}\u{1d5a5}>q\w*\W\w*\W\w*)/).groups.𝖰𝖑π–₯, "quick brown fox");
     69 assert.sameValue(string.match(/(?<\u{1d5b0}𝖑π–₯>q\w*\W\w*\W\w*)/).groups.𝖰𝖑π–₯, "quick brown fox");
     70 assert.sameValue(string.match(/(?<\u{1d5b0}𝖑\u{1d5a5}>q\w*\W\w*\W\w*)/).groups.𝖰𝖑π–₯, "quick brown fox");
     71 assert.sameValue(string.match(/(?<\u{1d5b0}\u{1d5a1}π–₯>q\w*\W\w*\W\w*)/).groups.𝖰𝖑π–₯, "quick brown fox");
     72 assert.sameValue(string.match(/(?<\u{1d5b0}\u{1d5a1}\u{1d5a5}>q\w*\W\w*\W\w*)/).groups.𝖰𝖑π–₯, "quick brown fox");
     73 
     74 assert.sameValue(string.match(/(?<the𝟚>the)/).groups.the𝟚, "the");
     75 assert.sameValue(string.match(/(?<the\u{1d7da}>the)/).groups.the𝟚, "the");
     76 assert.sameValue(string.match(/(?<the\ud835\udfda>the)/).groups.the𝟚, "the");
     77 
     78 match = string2.match(/(?<dog>dog)(.*?)(\k<dog>)/);
     79 assert.sameValue(match.groups.dog, "dog");
     80 assert.sameValue(match[1], "dog");
     81 assert.sameValue(match[2], " eat ");
     82 assert.sameValue(match[3], "dog");
     83 
     84 match = string2.match(/(?<𝓓𝓸𝓰>dog)(.*?)(\k<𝓓𝓸𝓰>)/);
     85 assert.sameValue(match.groups.𝓓𝓸𝓰, "dog");
     86 assert.sameValue(match[1], "dog");
     87 assert.sameValue(match[2], " eat ");
     88 assert.sameValue(match[3], "dog");
     89 
     90 match = string2.match(/(?<η‹—>dog)(.*?)(\k<η‹—>)/);
     91 assert.sameValue(match.groups.η‹—, "dog");
     92 assert.sameValue(match[1], "dog");
     93 assert.sameValue(match[2], " eat ");
     94 assert.sameValue(match[3], "dog");
     95 
     96 reportCompare(0, 0);