字母数字在jquery中不起作用

时间:2012-07-10 12:36:40

标签: jquery validation alphanumeric

  

可能重复:
  How to check for alphanumeric characters

Hai我使用alphanumbercic在jquery中验证密码。它只验证字母,假设我只输入它允许的数字。请指导我

问题

不使用允许的字母

编码

letters = /^[0-9a-zA-Z]+$/;   
            if(!password.value.match(letters))   
            {   
                alert('Password must be alphanumeric');   
                signupForm.password.focus();   
                return false;   
            }

2 个答案:

答案 0 :(得分:2)

如果您的密码必须包含所有案例:大写字母,小写字母和数字,那么您需要创建3个正则表达式:

var regexps = [/[A-Z]/,   //capital letter
              /[a-z]/,    //small letter
              /\d/ ];     //numeric digit
//This regexp is for assuring that 
//password does not contain other symbols than alphanumerics
var nonAlphanumericRegExp = /[^0-9a-zA-Z]/;

然后验证如下:

if(regexps.some(function(value){  return !value.test(password.value); }) ||
       nonAlphanumericRegExp.test(password.value)){
    alert('Password must be alphanumeric');   
    signupForm.password.focus();   
    return false; 
}

Live demo

文档

Array.some()

RegExp.test()

答案 1 :(得分:1)

我建议,可能:

/([a-z])([0-9])/

其中包含一组[a-z]个字母和[0-9]个数字。

原始表达式中的问题似乎是它只查找一个字符组,这些字符与标识为a-zA-Z的范围的任何部分相匹配或0-9,对于仅数字,仅字母或数字字母匹配为真。

以上RegExp修改为:

/(([a-z])+([0-9]))|(([0-9])+([a-z]))/

JS Fiddle demo

上面的更改原因是,RegExp将使用a1({1}}({1}}匹配 1a|。 }})匹配一个或另一个,但如果找不到,则仍然返回or,如果找到,则返回false