用正则表达式阻止特定单词

时间:2018-05-06 02:45:03

标签: javascript regex

我还在学习正则表达式,使用它仍然有点困惑。

我的情况: 我需要使用javascript或jquery来阻止输入html中的某些特定单词。

我需要阻止的字词是管理员或管理员关键字,我不希望人们在创建新帐户(用户名)时使用管理员或管理员等关键字。

我需要阻止像admin,4dmin,adm1n,4dm1n甚至ADMIN,4Dm1N这样的关键字。无论用户输入是小写还是大写,甚至是数字来代替字母" A"用数字" 4"。

现在我的代码是:

var input = document.getElementById("inputUser");
input.onkeyup = function() {
    input.value = input.value = input.value.replace(/(admin|4dmin|adm1n|4dm1n)/,"");
}

请帮助亲爱的大师们,我现在已经陷入困境,我非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

使用字符类和i标志(忽略大小写),你可以更容易地编写一个没有条形的正则表达式:

input.value = input.value.replace(/[a4]dm[i1]n/ig, '');

确保只使用一个= - 您当前的代码重复input.value = input.value =

但请记住,您不应仅依靠Javascript来管理它 - 在将输入放入数据库之前也要验证输入。

答案 1 :(得分:0)

您可以使用正则表达式尝试此操作

^(?!.*admin|.*4dmin|.*4dm1n).*$

答案 2 :(得分:0)

如果value与该数组中的任何字匹配,您可以保留一系列列入黑名单的单词和onkeyup检查



var input = document.getElementById("inputUser");
var restrictedVal = ["admin", "4dmin", "adm1n", "4dm1n"]
input.onkeyup = function() {
  if (restrictedVal.indexOf(input.value.toLowerCase()) !== -1) {
    input.value = "";
  }
}

<input type="text" id="inputUser">
&#13;
&#13;
&#13;