当用户尝试验证时,我必须检查文本区域中是否有禁用单词。
禁用词列表存储在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”或“dejà”)。
如何检查是否缺少重音?
注意“标记为重复”:重复的问题是关于“不带重音的正则表达式来检查带重音的文本”,我的是“带重音的正则表达式来检查可能丢失重音的文本”。
最佳答案
实现此目的的一种方法是稍微更改您的黑名单:
通过相同的替换替换所有带重音的字符。
例如:“déjà”
到:“d(é|e)j(à|a)”
如果您的黑名单很大,那么您可能希望自动执行此替换,但最后像这样编写黑名单会很方便。
关于javascript - 匹配时带有重音字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30184646/