【发布时间】:2023-03-22 10:26:01
【问题描述】:
这是我今天遇到的一个有趣的 sn-p:
/\ba/.test("a") --> true
/\bà/.test("à") --> false
然而,
/à/.test("à") --> true
首先,wtf?
其次,如果我想匹配单词开头的重音字符,我该怎么做? (我真的很想避免使用像/(?:^|\s|'|\(\) .... 这样的过度选择器)
【问题讨论】:
-
你的 WTF 的答案是 Javascript 不能在正则表达式中正确处理 Unicode。请参阅the standard 以了解它应该如何工作。或者使用在这方面符合标准的语言。仅举几例……在 Perl、PHP、PCRE 和 ICU 正则表达式中,
"à"肯定与模式/\bà/匹配。它们更适合 Unicode 工作。 -
您可能想要删除重音符号,然后进行简单的 [a-z] 检查。见stackoverflow.com/questions/990904/…
标签: javascript regex unicode internationalization