Tom*_*Tom 62 javascript regex validation jquery
我正在尝试编写正则表达式来验证必须满足以下条件的密码:
我尝试了以下但它似乎不起作用.
http://jsfiddle.net/many_tentacles/Hzuc9/
<input type='button' value='click' class='buttonClick' />
<input type='text' />
<div></div>
Run Code Online (Sandbox Code Playgroud)
和...
$(".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");
}
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Min*_*hev 172
您的正则表达式应如下所示:
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/
Run Code Online (Sandbox Code Playgroud)
这是一个解释:
/^
(?=.*\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
$/
Run Code Online (Sandbox Code Playgroud)
Ant*_*ist 17
使用单个正则表达式来测试不同的部分比尝试使用单个正则表达式来覆盖所有部分要容易得多.它还可以更轻松地添加或删除验证标准.
另请注意,您的使用.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
});
});
Run Code Online (Sandbox Code Playgroud)
至少 8 = {8,}
:
str.match(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8,})$/)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
155799 次 |
最近记录: |