如何允许包含禁止词的单词?

时间:2016-06-09 22:12:37

标签: javascript regex

我正在为表单的用户名输入创建一个过滤功能,以允许使用特定的禁止词。

我目前正在使用:

var forbiddenWords = ["c*m", "blabla", "blablabla"];
// Check for forbidden words
function isForbiddenWord(value) {
    for (var i = 0; i < forbiddenWords.length; i++) {
        var rgx = new RegExp(forbiddenWords[i], 'gi');
        if (rgx.test(value)) {
            forbiddenWord = forbiddenWords[i];
            return true;
        }
    }
    return false;
};

数组中的第一个单词&#34; c * m&#34;,显然是一个被禁止的单词。例如,有人输入用户名&#34; eat_a_c * mshot&#34;我希望它被禁止。如果其他人输入:incumbent_king,encumbrance,accumulate_wealth,cumbersome,im_a_scum,circumvent,sweet_cucumber等,我希望允许这些词。

有没有办法确定这些单词是否被使用并允许它们,比如正则表达式,或者我要求的太多了?

1 个答案:

答案 0 :(得分:1)

您可能需要尝试\b delimiter - 与/\bc*m|\bc*m\b|c*m\b/一样。这与正则表达式一样好。正如MikeC所说,自然语言处理是一个巨大的领域。

后记:进一步检查_实际上是一个单词字符,因此要使\b方法起作用,您需要替换{{1}与'_'