JavaScript中的正则表达式可以匹配没有单词边界的书写系统

JavaScript中的正则表达式可以匹配没有单词边界的书写系统,javascript,regex,unicode,Javascript,Regex,Unicode,我试图检测文本中是否有属于的字符。 根据维基百科,这些书写系统如下(我添加了ISO 639-2或639-3代码) 在中文的情况下,我为汉书写系统使用特定的正则表达式: HAN_REGEX = /[\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FD5\uF900-\uFA6D\uFA70-\uFAD9]/; 相当于\p{Han}。中国象形文字的

我试图检测文本中是否有属于的字符。 根据维基百科,这些书写系统如下(我添加了ISO 639-2或639-3代码)

中文
的情况下,我为
书写系统使用特定的正则表达式:

HAN_REGEX = /[\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FD5\uF900-\uFA6D\uFA70-\uFAD9]/;
相当于
\p{Han}
。中国象形文字的另一种解决方案是直接使用

let regexp = /\p{sc=Han}/gu;
假设给定
Kanji
Unicode表,文本中检测
JA
的字符集范围为:


但是其他的书写系统呢?这是唯一的方法吗?

这并不能解决所有的问题,因为我似乎无法找到一个很好的关于如何识别脚本连续体的参考资料,但它应该能让你基本上做到这一点

let regex = new RegExp(/[\p{Script_Extensions=Mymr}\p{Script_Extensions=Han}\p{Script_Extensions=Hira}\p{Script_Extensions=Kana}\p{Script_Extensions=Bopo}\p{Script=Khmer}\p{Script=Lao}\p{Script_Extensions=Phag}\p{Script=Tai_Tham}\p{Script=Thai}\p{Script=Tibetan}]/u)
脚本扩展将包括脚本的所有扩展字符以及基本字符,因此如果可以,通常最好使用脚本扩展

  • \p{Script_Extensions=Mymr}应该匹配缅甸语脚本中的任何字符(缅甸语、S'gaw Karen和Pwo Karen似乎映射到缅甸语脚本中)
  • \p{Script_Extensions=Han}应与汉字或汉字匹配
  • \p{Script_Extensions=Bopo}应该匹配Bopomofo字符(因为Hanb是Han+Bopo,但unicode没有组合脚本,所以应该匹配其他汉字)
  • \p{Script_Extensions=Hira}应与任何平假名字符匹配
  • \p{Script_Extensions=Kana}应与任何片假名字符匹配
  • \p{Script=Khmer}应与高棉文字中的字符匹配
  • \p{Script=Lao}应与Lao脚本中的字符匹配
  • \p{Script_Extensions=Phag}应与“Phags pa Script”中的字符匹配
  • \p{Script=Tai_Tham}应与Tai_Tham脚本中的字符匹配
  • \p{Script=Thai}应与Thai脚本中的字符匹配
  • \p{Script=藏文}应与藏文脚本中的字符匹配

由于unicode属性转义不能在没有unicode标志集的情况下使用,因此记住传递“u”标志很重要。

@Samuelliview OP列出了12个具有相同结构且与其他书写系统不同的书写系统。OP已经表明,他们知道如何独立识别12个正则表达式中的每一个,并且询问是否有一个正则表达式适用于所有正则表达式,而不必为每个正则表达式指定字符集范围。我认为这个问题已经足够集中,我投票决定重新讨论。你能再看一看吗?它能用,我看到它现在已经重新开放了。
KANJI_REGEX = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/
let regex = new RegExp(/[\p{Script_Extensions=Mymr}\p{Script_Extensions=Han}\p{Script_Extensions=Hira}\p{Script_Extensions=Kana}\p{Script_Extensions=Bopo}\p{Script=Khmer}\p{Script=Lao}\p{Script_Extensions=Phag}\p{Script=Tai_Tham}\p{Script=Thai}\p{Script=Tibetan}]/u)