带有重音字符的正则表达式

时间:2015-05-12 07:39:53

标签: javascript regex

当用户尝试验证时,我必须检查文本区域中的禁用词。 禁用词列表存储在jsBlackList数组中,到目前为止,这是我的代码的一部分:

var fieldValue = value;
var hasForbiddenWord = false;
for (i = 0; i < jsBlackList.length; i++) {
    var regex = new RegExp("\\b"+jsBlackList[i]+"\\b","gi");
    fieldValue = fieldValue.replace(regex, '***');
    hasForbiddenWord = hasForbiddenWord || fieldValue.match(regex);
}
value = fieldValue;

但问题是,jsBlackList有一些带重音的字符,而用户可以没有重音写(例如,jsBlackList可以有'déjà',并且用户键入了“deja”,“déja”或“似曾相识“)。

如何检查缺失的重音?

关于“标记为重复”的注意事项:重复的问题是关于“正则表达没有重音检查带有重音符号的文本”,我的是“带有重音的正则表达式,用于检查带有潜在缺失重音的文本”。

3 个答案:

答案 0 :(得分:2)

您需要在正则表达式或所有等价项中创建等价列表:

dé|ejà|a

答案 1 :(得分:2)

实现此目的的一种方法我稍微改变你的黑名单:

用相同的交替替换所有带重音的字符。

例如:"déjà"到:"d(é|e)j(à|a)"

如果您的黑名单很大,可能您希望自动执行此替换,但最后可以方便地将黑名单写成这样。

答案 2 :(得分:0)

我认为你最好的选择是:

  • 删除黑名单中的所有重音字符
  • 使用非重音等效词
  • 替换重音字符的处理文本

然后你可以比较而不用打扰口音。

相关问题