gpt4 book ai didi

Javascript 正则表达式 + Unicode 变音符号组合字符`

转载 作者:数据小太阳 更新时间:2023-10-29 06:02:27 26 4
gpt4 key购买 nike

我想匹配非洲约鲁巴语“ẹ́”中的这个字符。通常这是通过在点变音符号下组合 'é' 和 '\u0323' 来实现的。我发现:

'é\u0323'.match(/[é]\u0323/) works but
'ẹ́'.match(/[é]\u0323/) does not work.

我不只是想匹配 e。我想匹配所有组合。现在,我的解决方案涉及枚举所有组合。像这样:/[ÁÀĀÉÈĒẸE̩Ẹ́É̩Ẹ̀È̩Ẹ̄Ē̩ÍÌĪÓÒŌỌO̩Ọ́Ó̩Ọ̀Ò̩Ọ̄Ō̩ÚÙŪṢS̩áàāéèēẹe̩ẹ́é̩ẹ̀è̩ẹ̄ē̩íìīóòōọo̩ọ́ó̩ọ̀ò̩ọ̄ō̩úùūṣs̩]/

难道没有更短更好的方法来做到这一点,或者在 unicode 变音符号组合字符的 javascript 中进行正则表达式匹配不是这么容易吗?谢谢

最佳答案

通常解决方案是使用 Unicode properties and/or scripts ,但 JavaScript 本身并不支持它们。

但是存在库 XRegExp这增加了这种支持。有了这个库,你可以使用

\p{L}:匹配任何语言的任何类型的字母。

\p{M}:用于与另一个字符组合的字符(例如重音符号、变音符号、封闭框等)。

所以你的 Angular 色类看起来像这样:

[\p{L}\p{M}]+

这将匹配 Unicode 表中所有可能的字母。

如果要限制的话可以看看Unicode脚本并将 \p{L} 替换为脚本,它们会收集某些语言的所有字母。例如\p{Latin} 用于所有拉丁字母或 \p{Cyrillic} 用于所有西里尔字母。

关于Javascript 正则表达式 + Unicode 变音符号组合字符`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17357716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com