我需要jquery正则表达式来使用表单验证插件验证密码
我正在尝试使用表单验证插件附带的扩展规则我需要jquery正则表达式来使用表单验证插件验证密码,jquery,regex,jquery-validate,Jquery,Regex,Jquery Validate,我正在尝试使用表单验证插件附带的扩展规则patern用正则表达式验证密码。我在网上尝试过很多表达方式,但到目前为止,没有一种表达方式符合我的要求,或者由于某种原因,这些表达方式根本不符合我的描述。我需要验证以下内容: 密码必须包含6到20个字符 它必须至少包含一个大写字母 它必须至少包含一个数字 它必须至少包含一个小写字母 必须有可能重复 这不应该影响到这些角色的归属 它不能允许空白 其中一个子集的特殊字符应该是可选的 因此,用户应该能够输入以下示例: AAAA 1A Passw0rd abCd
patern
用正则表达式验证密码。我在网上尝试过很多表达方式,但到目前为止,没有一种表达方式符合我的要求,或者由于某种原因,这些表达方式根本不符合我的描述。我需要验证以下内容:
无论如何,您的任务最好是通过一个接一个的多次测试来完成。这不仅便于编程,还可以让您准确地告诉用户为什么不接受他们的密码。不要为此使用正则表达式
您有一个检查列表:只需使用常规字符串函数进行检查。尽管使用regexp应该考虑两次。以下是您如何做到这一点:
var pattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=[\$!]).{6,26}$/;
var password = '$$$h1Tzzzz';
password.match(pattern);
//output
["$$$h1Tzzzz"]
password = '$$$hTzzzz';
password.match(pattern);
//output
null
您可以使用\$和!“$”将特殊字符添加到括号中因为它有特殊的意义而被转义。谢谢,Kolink。你说得很对。不幸的是,考虑到应用程序面向的受众类型,如果我不强制用户至少输入大写字母,大多数用户将使用
1234
作为密码。我接受您的建议,进行部分验证,以便更好地向用户传达错误。但是,我认为表单验证插件不支持这一点。你知道吗?为什么不自己写代码呢a) 这是什么regex口味的?在我所知道的那些中,*
,匹配任何东西,0次或更多次。这些0或更多的anythings后面应该跟括号中的字符。b) 同样,在我所知道的风格中,正则表达式将匹配字符串/行的开头(^
),但前提是后跟*[a-z]
,但前提是…,并且是6到26次。Tbh,我搞不懂你的正则表达式。您能解释一下吗?@phresnel a)JavaScript正则表达式是Perl风格的,有一些限制。你的假设是对的<代码>*与任何内容匹配0次或更多次。b) 不完全是这样。它与^
匹配(?=regex)
是零宽度正向前瞻。在一个位置进行匹配,在该位置可以匹配前瞻中的模式。只匹配位置。它不使用任何字符或展开匹配。因此,每当它在(?=[\$!])
之外时,它仍然位于字符串的开头,并且字符串包含所有必需的字符。然后检查长度{6,20}$