我正在为表单的用户名输入创建一个过滤功能,以允许使用特定的禁止词。
我目前正在使用:
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等,我希望允许这些词。
有没有办法确定这些单词是否被使用并允许它们,比如正则表达式,或者我要求的太多了?
答案 0 :(得分:1)
您可能需要尝试\b
delimiter - 与/\bc*m|\bc*m\b|c*m\b/
一样。这与正则表达式一样好。正如MikeC所说,自然语言处理是一个巨大的领域。
后记:进一步检查_
实际上是一个单词字符,因此要使\b
方法起作用,您需要替换{{1}与'_'
。