检测用户输入是否包含JavaScript中的禁止字符

Detecting whether user input contains a forbidden character in JavaScript

本文关键字:禁止 字符 JavaScript 包含 用户 输入 是否 检测      更新时间:2023-09-26

我有一个文本框,点击提交按钮后将用JavaScript进行验证。

只允许使用字符0-9、a-f和a-f。

所以g-z和g-z以及其他字符,如标点符号或不允许使用。

到目前为止,我的代码是:

function validate_form ( )
{
    valid = true;
    if ( document.form.input.value == [a-zA-Z_,.:'|] )
    {
        alert ( "You can only enter either 0-9 or A-F. Please try again." );
        valid = false;
    }
    return valid;
}

这似乎不起作用。

我是JavaScript新手,谁能告诉我哪里出了问题吗?

我们实际上可以清理很多代码。不需要跟踪valid,因为test()将为我们提供我们正在寻找的truefalse值。在你的情况下,保留一个可接受字符的白名单也比黑名单容易得多。也就是说,我们知道我们想要的每个字符,但不可能指定不想要的每个字符。

function validate_form() {
  return /^[a-fA-F0-9]+$/.test(document.form.input.value);
}

请注意,您也可以使用此功能进行预检查:

document.form.input.onkeyup = function() {
  if (!validate_form()) {
    alert("You can only enter either 0-9 or A-F. Please try again.");
  }
};

语法为/^[a-zA-Z_,.:'|]+$/.test(document.form.input.value)。注意^$:如果没有它们,即使对于至少只有一个允许字符的字符串,测试也会通过。

验证的最佳方法是不要让用户输入错误的字符。使用以下代码(这是jQuery版本,但您也可以轻松地将其转换为JavaScript(:

 $('#inputFiledId').keyup(function(e){
     // checking the e.keyCode here, if it's not acceptable, the return false (which prevents the character from being entered into the input box), otherwise do nothing here.
 });

这叫做预检查。请考虑,无论你在客户端做什么,你都应该始终在服务器上检查值(进行服务器端验证(,因为有多种黑客行为,比如表单欺骗。

您可以执行类似的操作

$('input').keyup(function(){
    var charac = /[g-zG-Z;:,.|_]/;
    var result = charac.test($(this).val());
    if(result == true){
        alert('You can only enter either 0-9 or A-F. Please try again.');
    }
})

http://jsfiddle.net/jasongennaro/GTQPv/1/