【发布时间】:2013-01-19 20:38:46
【问题描述】:
8 到 16 个字符,3 个字符类别中的每个类别至少有 1 个字符 - 大小写字母、数字、符号。
我有这段代码,但它不起作用,当我写超过 16 个字符时,它被认为是有效的,但它不应该;它应该适用于 3 个字符类,但它适用于 4 个字符类,我的错误在哪里??
http://jsbin.com/ugesow/1/edit
<label for="pass">Enter Pass: </label>
<input type="text" id="pass" onkeyup="validate()">
脚本
function validate() {
valor = document.getElementById('pass').value;
if (!(/(?=.{8,16})(?=.*?[^\w\s])(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*/.test(valor))) {
document.getElementById('pass').style.backgroundColor = "red";
} else {
document.getElementById('pass').style.backgroundColor = "#adff2f";
}
}
【问题讨论】:
-
您有兴趣让这个特定的正则表达式工作吗?在其他地方你可以把你的问题分成更小的部分,比如检查长度等。
-
如果您提供一个示例列表,说明哪些是有效的,哪些不是。
-
@vault 不一样
-
@Kakitori:非常相似。
标签: javascript html regex