验证表单时如何检查特殊字符

时间:2019-03-25 16:12:09

标签: javascript

我正在尝试在表单中添加表单验证。我已经设法做到了字符长度,数字,字母,并且它们都可以正常工作,但是它似乎不适用于特殊字符,例如@&*等。

我尝试按照上一个问题的示例进行操作,该示例为所有不同的特殊字符创建了一个变量,然后在这里执行了与其他检查相同的操作,将输入字段的变量与特殊字符匹配为看看是否有,但是没有检测到它们。

这是我的JavaScript:

function ValidateActInsert() {
var specialChars = /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/;
        if (document.actorInsert.actInsert.value.match(specialChars)) {
        alert ("Only characters A-Z, a-z and 0-9 are allowed!")
        document.actorInsert.actInsert.focus();
        return false;
    }
    return (true);
}

这是我要在其上执行的HTML表单:

<form name = "actorInsert" align = "center" action="actorInserting.php" onSubmit="return ValidateActInsert()">
    Actor name:<br>
    <input type = "text" name = "actInsert"
    <br><br>
    <input type = "submit" value = "Insert">
</form>

代码本身对我来说很有意义,我想它会起作用,而老实说,我不知道为什么它不起作用

2 个答案:

答案 0 :(得分:2)

您抓住了每个符号。

让我们简单一点就只允许 a-z小写, A-Z大写和或 0-9如@SterlingArcher所说。

/[^a-zA-Z ]/g仅允许使用a-z和A-Z

/[^a-zA-Z0-9 ]/g仅允许使用a-z,A-Z和0-9

  

字母和数字:

function ValidateActInsert() {
    var specialChars = /[^a-zA-Z0-9 ]/g;
    if (document.actorInsert.actInsert.value.match(specialChars)) {
        alert ("Only characters A-Z, a-z and 0-9 are allowed!")
        document.actorInsert.actInsert.focus();
        return false;
    }
    return (true);
}
<form name = "actorInsert" align = "center" action="actorInserting.php" onSubmit="return ValidateActInsert()">
    Actor name:<br>
    <input type = "text" name = "actInsert"
    <br><br>
    <input type = "submit" value = "Insert">
</form>

  

仅数字

function ValidateActInsert() {
    var specialChars = /[^a-zA-Z ]/g;
    if (document.actorInsert.actInsert.value.match(specialChars)) {
        alert ("Only characters A-Z, a-z are allowed!")
        document.actorInsert.actInsert.focus();
        return false;
    }
    return (true);
}
<form name = "actorInsert" align = "center" action="actorInserting.php" onSubmit="return ValidateActInsert()">
    Actor name:<br>
    <input type = "text" name = "actInsert"
    <br><br>
    <input type = "submit" value = "Insert">
</form>

我建议使用https://regexr.com/测试表达式并从一些示例中学习。

答案 1 :(得分:1)

使用regex.test(val)

^ [0-9a-zA-Z] * $

  

^开始

     

[0-9a-zA-Z]仅允许[]内的字符

     

$ end *包含的字符数

function ValidateActInsert() {
  var regex = /^[0-9a-zA-Z ]*$/;
  var val = document.getElementsByTagName('input')[0].value;
  if(!regex.test(val)){
    alert("false");
  }else{
    alert("true");
  }
  return false;
}
<form name = "actorInsert" align = "center" action="actorInserting.php" onSubmit="return ValidateActInsert()">
    Actor name:<br>
    <input type = "text" name = "actInsert">
    <br>
    <input type = "submit" value = "Insert">
</form>