tor-browser

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

unicode-property-names-valid.js (4456B)


      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 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 Invalid ID_Start / ID_Continue
     39 
     40 (fox face emoji) 🦊  \u{1f98a}  \ud83e \udd8a
     41 (dog emoji)  πŸ•  \u{1f415}  \ud83d \udc15
     42 */
     43 
     44 var string = "The quick brown fox jumped over the lazy dog's back";
     45 var string2 = "It is a dog eat dog world.";
     46 
     47 let match = null;
     48 
     49 assert.sameValue(string.match(/(?<animal>fox|dog)/u).groups.animal, "fox");
     50 assert.sameValue(string.match(/(?<the2>the)/u).groups.the2, "the");
     51 
     52 match = string.match(/(?<π‘“π‘œπ‘₯>fox).*(?<𝓓𝓸𝓰>dog)/u);
     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 match = string.match(/(?<η‹Έ>fox).*(?<η‹—>dog)/u);
     59 assert.sameValue(match.groups.η‹Έ, "fox");
     60 assert.sameValue(match.groups.η‹—, "dog");
     61 assert.sameValue(match[1], "fox");
     62 assert.sameValue(match[2], "dog");
     63 
     64 assert.sameValue(string.match(/(?<𝓑𝓻𝓸𝔀𝓷>brown)/u).groups.𝓑𝓻𝓸𝔀𝓷, "brown");
     65 assert.sameValue(string.match(/(?<𝓑𝓻𝓸𝔀𝓷>brown)/u).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown");
     66 assert.sameValue(string.match(/(?<\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}>brown)/u).groups.𝓑𝓻𝓸𝔀𝓷, "brown");
     67 assert.sameValue(string.match(/(?<\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}>brown)/u).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown");
     68 assert.sameValue(string.match(/(?<\ud835\udcd1\ud835\udcfb\ud835\udcf8\ud835\udd00\ud835\udcf7>brown)/u).groups.𝓑𝓻𝓸𝔀𝓷, "brown");
     69 assert.sameValue(string.match(/(?<\ud835\udcd1\ud835\udcfb\ud835\udcf8\ud835\udd00\ud835\udcf7>brown)/u).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown");
     70 
     71 assert.sameValue(string.match(/(?<𝖰𝖑π–₯>q\w*\W\w*\W\w*)/u).groups.𝖰𝖑π–₯, "quick brown fox");
     72 assert.sameValue(string.match(/(?<𝖰𝖑\u{1d5a5}>q\w*\W\w*\W\w*)/u).groups.𝖰𝖑π–₯, "quick brown fox");
     73 assert.sameValue(string.match(/(?<𝖰\u{1d5a1}π–₯>q\w*\W\w*\W\w*)/u).groups.𝖰𝖑π–₯, "quick brown fox");
     74 assert.sameValue(string.match(/(?<𝖰\u{1d5a1}\u{1d5a5}>q\w*\W\w*\W\w*)/u).groups.𝖰𝖑π–₯, "quick brown fox");
     75 assert.sameValue(string.match(/(?<\u{1d5b0}𝖑π–₯>q\w*\W\w*\W\w*)/u).groups.𝖰𝖑π–₯, "quick brown fox");
     76 assert.sameValue(string.match(/(?<\u{1d5b0}𝖑\u{1d5a5}>q\w*\W\w*\W\w*)/u).groups.𝖰𝖑π–₯, "quick brown fox");
     77 assert.sameValue(string.match(/(?<\u{1d5b0}\u{1d5a1}π–₯>q\w*\W\w*\W\w*)/u).groups.𝖰𝖑π–₯, "quick brown fox");
     78 assert.sameValue(string.match(/(?<\u{1d5b0}\u{1d5a1}\u{1d5a5}>q\w*\W\w*\W\w*)/u).groups.𝖰𝖑π–₯, "quick brown fox");
     79 
     80 assert.sameValue(string.match(/(?<the𝟚>the)/u).groups.the𝟚, "the");
     81 assert.sameValue(string.match(/(?<the\u{1d7da}>the)/u).groups.the𝟚, "the");
     82 assert.sameValue(string.match(/(?<the\ud835\udfda>the)/u).groups.the𝟚, "the");
     83 
     84 match = string2.match(/(?<dog>dog)(.*?)(\k<dog>)/u);
     85 assert.sameValue(match.groups.dog, "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<𝓓𝓸𝓰>)/u);
     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 match = string2.match(/(?<η‹—>dog)(.*?)(\k<η‹—>)/u);
     97 assert.sameValue(match.groups.η‹—, "dog");
     98 assert.sameValue(match[1], "dog");
     99 assert.sameValue(match[2], " eat ");
    100 assert.sameValue(match[3], "dog");
    101 
    102 reportCompare(0, 0);