如何在javascript正则表达式匹配中忽略急性重音?

san*_*ari 13 javascript regex diacritics special-characters non-ascii-characters

我需要像"César"这样的词匹配这样的正则表达式/^cesar/i.

是否有选项/i配置正则表达式,以便它忽略急性重音?或者唯一的解决方案是使用这样的正则表达式/^césar/i.

Den*_*ret 6

标准的ecmascript正则表达式还没有为unicode做好准备(参见http://blog.stevenlevithan.com/archives/javascript-regex-and-unicode).

所以你必须使用外部正则表达式库.我过去使用过这个(使用unicode插件):http://xregexp.com/

在你的情况,你可能逃脱字符é作为\u00E9和界定范围的englobing E,E,E等

编辑:我刚看到亚历克斯的评论:你会在范围内找到e的重音等价物.


Ja͢*_*͢ck 5

您可以先从字符串中删除重音并单独测试:

var someString = 'César';
var bare = removeDiacritics(someString);

if (/^cesar/i.test(bare)) {
    // fail
}
Run Code Online (Sandbox Code Playgroud)

有关的定义,请参阅此答案removeDiacritics()