0

可能重复:
如何检查字母数字字符

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

问题

不使用它允许的字母

编码

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

2 回答 2

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; 
}

现场演示

文档

Array.some()

正则表达式.test()

于 2012-07-10T12:50:08.657 回答
1

我建议,可能:

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

它看起来匹配一组[a-z]字母和[0-9]数字。

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

上述 RegExp 修改为:

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

JS 小提琴演示

上述更改的原因是,RegExp 将同时匹配 a11a使用|(RegExp or) 匹配其中一个或另一个,但false如果两者都没有找到并且true如果找到任何一个,则仍然返回。

于 2012-07-10T12:40:49.573 回答