我试图编写一个正则表达式来验证密码,它必须满足以下条件:
我尝试了以下方法,但似乎不起作用。
http://jsfiddle.net/many_tentacles/Hzuc9/
<input type='button' value='click' class='buttonClick' />
<input type='text' />
<div></div>
和
$(".buttonClick").click(function () {
if ($("input[type=text]").filter(function () {
return this.value.match(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8})$/);
})) {
$("div").text("pass");
} else {
$("div").text("fail");
}
});
有什么想法吗?
至少8={8,}
:
str.match(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8,})$/)
使用单个正则表达式来测试不同的部分要比试图用一个正则表达式来覆盖所有部分容易得多。它还可以更轻松地添加或删除验证标准。
另外,请注意,您对. Filter()
的使用是不正确的;它总是会返回一个jQuery对象(在JavaScript中被认为是真实的)。就我个人而言,我会使用一个. each()
循环来迭代所有的输入,并报告单个的通过/失败状态。类似于下面:
$(".buttonClick").click(function () {
$("input[type=text]").each(function () {
var validated = true;
if(this.value.length < 8)
validated = false;
if(!/\d/.test(this.value))
validated = false;
if(!/[a-z]/.test(this.value))
validated = false;
if(!/[A-Z]/.test(this.value))
validated = false;
if(/[^0-9a-zA-Z]/.test(this.value))
validated = false;
$('div').text(validated ? "pass" : "fail");
// use DOM traversal to select the correct div for this input above
});
});
工作演示
正则表达式应该如下所示:
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/
这里有一个解释:
/^
(?=.*\d) // should contain at least one digit
(?=.*[a-z]) // should contain at least one lower case
(?=.*[A-Z]) // should contain at least one upper case
[a-zA-Z0-9]{8,} // should contain at least 8 from the mentioned characters
$/
我想要一个正则表达式来检查以下内容: 至少包含10个字符 至少有一个大写字母 至少有一个小写字母 允许空格 null 我需要以下内容有效: JohnDoe1234567891011(仅数字) Johndoe!!!!!!!!!!!!!!!(仅限特殊字符)
我需要一个正则表达式,它应该至少有一个数字字符,允许大小写字母,也允许特殊字符 但它对最大字符10无效。
null 包含情况的示例为: 排除情况的示例为:
我需要一个正则表达式来检查: 密码至少包含八个字符,其中至少包含一个数字,并且包含大小写字母和特殊字符,例如、、。 它不能是您的旧密码,也不能包含您的用户名、或 这里是我的验证表达式,它针对八个字符,包括一个大写字母,一个小写字母,和一个数字或特殊字符。 密码必须是八个字符,包括一个大写字母,一个特殊字符和字母数字字符,我怎么写呢?
我需要密码字段的正则表达式。 要求是: > 密码长度必须为8到20个字符 必须包含至少一个字母和一个数字以及来自
问题内容: 我有一个正则表达式 这仅允许字母数字,但是如果我仅插入数字或字符,那么它也接受它。我希望它像字段应只接受字母数字值一样工作,但该值必须至少包含1个字符和1个数字。 问题答案: 为什么不先应用整个测试,然后再添加针对字符和数字的单独测试?无论如何,如果您想在一个正则表达式中完成所有操作,请使用正向提前: