代码之家  ›  专栏  ›  技术社区  ›  Andrei Cleland

在长正则表达式中包含unicode字符

  •  0
  • Andrei Cleland  · 技术社区  · 2 年前

    /[a-zA-Zɑôáīúȑìêɑ͡iɑ͡uŋġḧn̐ƞġg̶̃čḣñt́d́ŕŕńȶv̈m̈ᵯǰɏæǽÿẇẏs̃śś̶]+/gm
    

    除了有一个角色我不能包括在内(或者当被包括在内的时候,它似乎不像预期的那样有效)之外,它很好用。字符位于正则表达式的最后一位:

    ś̶ //[它使交叉穿过(在某些字体中不容易看到),在unicode中是 'COMBINING LONG STROKE OVERLAY' (U+0336)

    "mokk̇ś̶ḣô".match(/[a-zA-Zɑôáīúȑìêɑ͡iɑ͡uŋġḧn̐ƞġčḣñt́d́ŕŕńȶv̈m̈ᵯǰɏæǽÿẇẏs̃śś̶g̶̃]+/gm)
    
    // == ['mokk', 'ś̶ḣô']
    

    我听说过 Unicode Property Escapes 使用 \p{UnicodePropertyValue} 用一个 u 旗帜这在这里有用吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Dorad    2 年前

    它似乎与char无关。正如你所说的那样,它正在被捕获。

    console.log("mokk̇ś̶ḣô".match(/[a-zA-Zɑôáīúȑìêɑ͡iɑ͡uŋġḧn̐ƞġčḣñt́d́ŕŕńȶv̈m̈ᵯǰɏæǽÿẇẏs̃śś̶g̶̃]+/gm)
    )
    console.log("mokk̇ś̶ḣô".match(/[a-zA-Zɑôáīúȑìêɑ͡iɑ͡uŋġḧn̐ƞġčḣñt́d́ŕŕńȶv̈m̈ᵯǰɏæǽÿẇẏs̃śś̶k̇g̶̃]+/gm)
    )