javascript - 匹配时带有重音字符的正则表达式

标签 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”或“dejà”)。

如何检查是否缺少重音?

注意“标记为重复”:重复的问题是关于“不带重音的正则表达式来检查带重音的文本”,我的是“带重音的正则表达式来检查可能丢失重音的文本”。

最佳答案

实现此目的的一种方法是稍微更改您的黑名单:

通过相同的替换替换所有带重音的字符。

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

如果您的黑名单很大,那么您可能希望自动执行此替换,但最后像这样编写黑名单会很方便。

关于javascript - 匹配时带有重音字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30184646/

相关文章:

Python 正则表达式返回真/假

php - 如何在 Laravel 中对大写字母、数字和方括号使用正则表达式验证,然后列为邮政编码范围?

jquery - 正则表达式 jquery

Java Regex matches() 返回 false 但在浏览器中有效

mysql - 一种在语言标记后清理特定字符串的方法

javascript - android 的 mathjax 中的多行文本

javascript - 如何在 onClick 中绑定(bind) angularjs 的数据作为参数

javascript - 在自定义元素中获取元素引用

javascript - 如何使用 Cordova 访问 Android 中的通话记录?

javascript - 在数组中查找不连续的数字对