使用jQuery检查输入中的无效字符

时间:2012-10-06 22:44:29

标签: javascript jquery html

我有一个输入框,其中输入了用户名但是如果输入了无效字符,我希望它出错。下面的代码就是我正在使用的代码;我会把什么放在“某事”部分?

    var numbers = new RegExp("SOMETHING");

    $(this).removeClass("active");          

    if(($(this).val() == "") || $(this).val().match(numbers))
    {
        $("#firstNameErrorMsg").html("First name can only contain letters. ");
    }
    else
    {
        $("#firstNameErrorMsg").html("OK");
    }

6 个答案:

答案 0 :(得分:2)

试试这个正则表达式

[A-Za-z]

这将只匹配小写和大写字符

答案 1 :(得分:2)

以下是我多年前写的一些模式:

patt['name'] = /^[a-z ,-]+$/i;
patt['username'] = /^[A-z0-9_-]+$/i;
patt['email'] = /^[a-z0-9]+(?:[\.-]?[a-z0-9]+)*@[a-z0-9]+([-]?[a-z0-9]+)*[\.-]?[a-z0-9]+([-]?[a-z0-9]+)*([\.-]?[a-z]{2,})*(\.[a-z]{2,5})+$/i;
patt['website'] = /^http(s)?:\/\/(www\.)?[a-z0-9]+([-]?[a-z0-9]+)*[\.-]?[a-z0-9]+([-]?[a-z0-9]+)*([\.-]?[a-z]{2,})*(\.[a-z]{2,5})+$/i;
patt['age'] = /^(?:([1][3-9]|[2-9][0-9]))$/i;
patt['subject'] = /[a-z0-9?!:;'&_\. ,-]+/i;

如果你想使用它们,你应该检查这个条件:

if(($(this).val() == "") || ! $(this).val().match(patt['name'])){ // in case.
...
}

但是如果你想检查不需要的字符,那么username输入将是一个很长的模式。

答案 2 :(得分:0)

如果您正在寻找验证您的用户输入,只有字母,我建议使用字符代码,如下所示:

  1. 在输入标记

  2. 上添加按键事件
  3. 对于事件args传递,检查字符代码(有些浏览器使用keyCode,其他浏览器使用哪个)

    function checkOnKeyDown(event){
      if(event.KeyCode> = 65&& event.keyCode< = 122)   {    //一切都好 - 只接受大写/小写字母   }   其他   {    //错误   } }

  4. 这是一个包含所有keyCode到字符映射的列表;):http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

答案 3 :(得分:0)

建议您阅读一些关于regexesexperiment with them的内容。

为了得到简单的字母而不是别的,只需:

^[a-zA-Z]+$

允许1..n小写&在开始和结束之间找到大写字母,没有别的。 Sushanth的版本将匹配输入的部分片段,让用户在其他地方使用空格,数字等,只要输入中有一个带有单词的输入。

答案 4 :(得分:0)

这应该是你要做的事情的完整实现:​​

var invalid = /[^A-Za-z]+/;

$(this).removeClass("active");          

if($(this).val() == "" || invalid.test($(this).val()))
{
    $("#firstNameErrorMsg").html("First name can only contain letters. ");
}
else
{
    $("#firstNameErrorMsg").html("OK");
}

答案 5 :(得分:0)

Sushanth大多是正确的,但你需要匹配任意数量的字母,而且必须从头到尾只有字母,所以你应该做这样的事情

var name = new RegExp('^[A-Za-z]+$');
$(this).removeClass('active');

if($(this).val().match(name)) {
    $('#firstNameErrorMsg').html('OK');
} else {
    $('#firstNameErrorMsg').html('First name can only contain letters.');
}