san*_*ari 13 javascript regex diacritics special-characters non-ascii-characters
我需要像"César"这样的词匹配这样的正则表达式/^cesar/i
.
是否有选项/i
配置正则表达式,以便它忽略急性重音?或者唯一的解决方案是使用这样的正则表达式/^césar/i
.
标准的ecmascript正则表达式还没有为unicode做好准备(参见http://blog.stevenlevithan.com/archives/javascript-regex-and-unicode).
所以你必须使用外部正则表达式库.我过去使用过这个(使用unicode插件):http://xregexp.com/
在你的情况,你可能逃脱字符é
作为\u00E9
和界定范围的englobing E,E,E等
编辑:我刚看到亚历克斯的评论:你会在范围内找到e的重音等价物.
您可以先从字符串中删除重音并单独测试:
var someString = 'César';
var bare = removeDiacritics(someString);
if (/^cesar/i.test(bare)) {
// fail
}
Run Code Online (Sandbox Code Playgroud)
有关的定义,请参阅此答案removeDiacritics()
。