仅允许字母数字值

Kay*_*Kay 29 jquery

可能重复:
如何防止用户在输入字段中输入无效字符

我在页面上有3个文本框.其中一个应该允许数字,其他字母和第三个数字或字母.

由于这是唯一的要求,我不想使用验证插件或任何其他第三方插件.我怎么能通过使用纯jQuery创建自己的插件来做到这一点?

这就是我所做的,但我觉得代码会变得太长

 $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;            
            return (
                key == 8 || 
                key == 9 ||
                key == 46 ||
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        });
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/Cvus8/

谁能告诉我哪种方法可以解决这个问题呢?

Kam*_*ami 61

更好的解决方案可能是使用基于正则表达式的检查.以下示例将仅限制具有id的字段中的字母数字字符text:

$('#text').keypress(function (e) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) {
        return true;
    }

    e.preventDefault();
    return false;
});
Run Code Online (Sandbox Code Playgroud)

  • 这对符号不起作用,例如!@#$%^&*() (5认同)
  • @CountMurphy答案中的正则表达式旨在仅允许使用大写/小写字母和数字。设计不允许使用符号。如果需要符号,可以扩展正则表达式以包括这些符号。 (2认同)

Sco*_*pio 12

1-9范围内的数字,后跟零个或多个其他数字:

^[1-9]\d*$
Run Code Online (Sandbox Code Playgroud)

确保字符串仅包含(ASCII)字母数字字符,下划线和空格

^[\w ]+$
Run Code Online (Sandbox Code Playgroud)

只有Alphabets没有空格或_

^[a-zA-Z]+$
Run Code Online (Sandbox Code Playgroud)

要匹配仅包含这些字符(或空字符串)的字符串,请尝试

^[a-zA-Z0-9_]*$
Run Code Online (Sandbox Code Playgroud)

一些可能有帮助的模式..但我认为你必须根据你的需要修改它们.我希望它有所帮助..