0

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

    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");
    }
4

6 回答 6

2

试试这个正则表达式

[A-Za-z]

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

于 2012-10-06T22:53:48.677 回答
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输入模式。

于 2012-10-06T22:55:16.477 回答
0

建议您阅读一些关于正则表达式的内容并尝试使用它们

要获得简单的字母而不是其他任何内容,只需执行以下操作:

^[a-zA-Z]+$

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

于 2012-10-06T23:03:00.357 回答
0

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

  1. 在输入标签上添加按键事件

  2. 对于传递的事件参数,检查字符代码(一些浏览器使用 keyCode,其他浏览器使用 which)

    function checkOnKeyDown(event){
    if (event.KeyCode >= 65 && event.keyCode <=122) { //这里没问题 -- 只接受大写/小写字母 } else { //错误 } }

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

于 2012-10-06T22:56:16.520 回答
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");
}
于 2012-10-06T23:09:06.497 回答
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.');
}
于 2012-10-06T23:11:34.963 回答