当用户尝试验证时,我必须检查文本区域中的禁用词。
禁用词列表存储在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”或“似曾相识“)。
如何检查缺失的重音?
关于“标记为重复”的注意事项:重复的问题是关于“正则表达没有重音检查带有重音符号的文本”,我的是“带有重音的正则表达式,用于检查带有潜在缺失重音的文本”。
答案 0 :(得分:2)
您需要在正则表达式或所有等价项中创建等价列表:
dé|ejà|a
答案 1 :(得分:2)
实现此目的的一种方法我稍微改变你的黑名单:
用相同的交替替换所有带重音的字符。
例如:"déjà"
到:"d(é|e)j(à|a)"
如果您的黑名单很大,可能您希望自动执行此替换,但最后可以方便地将黑名单写成这样。
答案 2 :(得分:0)
我认为你最好的选择是:
然后你可以比较而不用打扰口音。