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

检测用户输入是否包含JavaScript中的禁止字符,javascript,Javascript,我有一个文本框,单击submit按钮后,它将在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 eith

我有一个文本框,单击submit按钮后,它将在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,所以任何人都可以告诉我哪里出了问题吗?

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

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

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


这叫做预检查。请考虑你在客户端做的任何事情,你应该总是检查服务器上的值(有服务器端验证),因为周围有多个黑客,比如

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


这叫做预检查。请考虑你在客户端做的任何事情,你应该总是检查服务器上的值(有服务器端验证),因为周围有多个黑客,比如

,我们可以大量清理这个代码。无需跟踪
valid
,因为
test()
将为我们提供所需的
true
false
值。在您的情况下,保留可接受字符的白名单比黑名单要容易得多。也就是说,我们知道我们想要的每个角色,但不可能指定我们不想要的每个角色

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

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

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

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

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

你可以这样做

$('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.');
    }
})

你可以这样做

$('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.');
    }
})

document.form.input.value==[a-zA-Z,.:\\\\\124;]
不是有效的JS语法。阅读关于正则表达式的文章:为每个坏字符弹出一个警报会非常烦人。最好使用错误消息来取消隐藏div或其他内容。
document.form.input.value==[a-zA-Z.:\\\124;]
不是有效的JS语法。阅读关于正则表达式的文章:为每个坏字符弹出一个警报会非常烦人。最好是取消隐藏一个div或带有错误消息的内容。