Mar*_*ijn 8 javascript regex unicode
Unicode 文本分割需要访问字符的Grapheme_Cluster_Break属性。众所周知,JavaScript 没有以直接方式提供。我希望我能够在正则表达式中使用Unicode 属性转义来解决这个问题,但这似乎并不那么简单/\p{Grapheme_Cluster_Break=Extend}/u。你可以做\p{Grapheme_Extend},但那测试不同的东西。
有没有办法欺骗 JavaScript 运行时通过属性转义向我提供有关字符的 Grapheme_Cluster_Break 值的信息?(如果没有,为什么不呢?)
根据 ECMAScript 规范,遗憾的是答案是否定的。
如果您查看 UnicodeMatchProperty 部分:https://tc39.es/ecma262/#sec-runtime-semantics-unicodematchproperty-p
您可以看到,虽然包含了一整套二进制Grapheme_ExtendUnicode 属性(包括例如),但唯一支持的Unicode 属性值General_Category是、Script和Script_Extensions。
Grapheme_Cluster_Break不幸的是,不包括在内。
我不知道为什么规范会专门包含一些 Unicode 属性而不包含其他属性。但似乎没有任何访问它的技巧。
虽然它不是 RegExp,但您可以使用 Intl.Segmenter 来分割字素,尽管它目前仅内置于 Chrome 和 Safari 中 - Firefox 尚未实现它。