Jquery 正则表达式不´;行不通

Jquery 正则表达式不´;行不通,jquery,regex,jquery-validate,Jquery,Regex,Jquery Validate,我试图验证一个文本字段类型的密码,但当我试图写入密码时,验证不起作用。用于验证:minlength 6、maxlength 12、大写、小写和数字 HTML 请尝试以下方法: /^[a-zA-Z0-9]{6,12}$/.test(value) 正则表达式部分: # / - Start regex # ^ - Match the beginning of the string, # [a-zA-Z0-9] - Followed by any charact

我试图验证一个文本字段类型的密码,但当我试图写入密码时,验证不起作用。用于验证:minlength 6、maxlength 12、大写、小写和数字

HTML

请尝试以下方法:

/^[a-zA-Z0-9]{6,12}$/.test(value)
正则表达式部分:

# /           - Start regex
# ^           - Match the beginning of the string,
# [a-zA-Z0-9] - Followed by any character that's within the a-z, A-Z, or 0-9 range,
# {6,12}      - And there's between 6 and 12 of these characters,
# $           - Followed by the end of the string (So not followed by any other characters)
# /           - End regex.
当必须在PW中找到所有3个元素时,最简单且可能是最可读的方法是:

$.validator.addMethod("password1", function (value, element) {
    return /^.{6,12}$/.test(value) && // The string is between 6-12 characters long,
                 /\d/.test(value) && // And contains a digit,
             /[A-Z]/.test(value) && // And contains a upper-case letter,
            /[a-z]/.test(value)    // And contains a lower-case letter.
});
这样做的好处是,如果字符串与长度要求不匹配,则不会计算其余正则表达式。它是一个“短路”运算符,这意味着,如果运算符左侧的值为
false
,则完整操作不能为
true
,因此不会对右侧进行评估。

此运算符应能:

/^(?=\w{6,12}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d).*/
有关其工作原理的详细信息,请访问此处

本文中的方法最大长度为10,但将其转换为12很简单。

jQuery.validator.addMethod(“passcheck”,函数(值,元素){
jQuery.validator.addMethod("passcheck", function(value, element) {
     var upperCase= new RegExp('[A-Z]');
     var lowerCase= new RegExp('[a-z]');
     var numbers= new RegExp('[0-9]');
     return this.optional(element) || (value.match(upperCase) && value.match(lowerCase) && value.match(numbers) && value.length >=6 && value.length <=12);
}, "* Your password must be between 6 and 12 characters. It must contain a mixture of uppercase, lowercase, and digits");
rules:{
    password1: {
       required: true,
       passcheck: true
    }
},
var大写=newregexp('[A-Z]'); var lowerCase=newregexp('[a-z]'); 变量编号=新的RegExp('[0-9]');
返回此.optional(element)| |(value.match(大写)&&value.match(小写)&&value.match(数字)&&value.length>=6&&value.length您的意思是密码必须包含大写字符、小写字符和数字(在这种情况下,我将创建多个regexp).如果不是@Cerbrus,我指的是一种混合物,至少是:a-z,a-z和数字(都是必需的)请不要限制密码长度!人们希望使用更安全的密码短语。它是大写、小写和数字,而不是大写、小写或数字或它们的任意组合three@Andreas:OP din不提及PW是否必须或可以包含这些元素。它必须包含3个元素,至少一次,对不起,我的baDexplication@jal这对你有用吗?如果是的话,你能考虑一下吗?为什么要使用<代码>新的ReGuffe()
.match
而不是简单的正则表达式文本和
.test
?Cerbus,我将尝试更改我的method@jal:请看我的答案。它使用完全相同的正则表达式,减去临时变量或其他错误做法。
/^(?=\w{6,12}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d).*/
jQuery.validator.addMethod("passcheck", function(value, element) {
     var upperCase= new RegExp('[A-Z]');
     var lowerCase= new RegExp('[a-z]');
     var numbers= new RegExp('[0-9]');
     return this.optional(element) || (value.match(upperCase) && value.match(lowerCase) && value.match(numbers) && value.length >=6 && value.length <=12);
}, "* Your password must be between 6 and 12 characters. It must contain a mixture of uppercase, lowercase, and digits");
rules:{
    password1: {
       required: true,
       passcheck: true
    }
},