验证一个字符串,必须包含不少一个大写字母,一个小写字母,一个数字,一个特殊符号, 字符串的长度为6-10,
比如 Aa8+001,8aA001+
大写字母,小写字母,数字,特殊符号,必须有一个,可以多个字母,数字,特殊符号,地顺序不限制
比如 Aa8+001,8aA001+
大写字母,小写字母,数字,特殊符号,必须有一个,可以多个字母,数字,特殊符号,地顺序不限制
解决方案 »
- 判断不起作用return false 会阻止提交
- 不同元素之间共用一个onmouseover和onmouseout事件
- 如何用闭包处理这个问题
- MzTree1.0的小问题
- 怎样不用点提交就可直接获取复选框的值呢?
- [转贴]绝好的日期控件(My97DatePicker2.0)正式版发布(跨浏览器,跨框架,支持时间选择,自定义格式,动态切换皮肤等等),顶上去大家一起分享啊
- 如何实现漂浮多个图片?
- 如何让marquee实现滚动循环?在线等!
- 为什么mail函数不能发送邮件?
- 如何用 JavaScript 读写二进制文件?
- 我遇到一个困扰我好几个月的问题,希望大家能帮我解决
- 本人正学JavaScript,准备以后做网页设计制作,请教过来人:没有美术基础,能做吗?
只要分别满足各个要求就行了
比如下面的代码中,必须满足 5 个正则才通过
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html>
<head>
<title>test</title>
</head><script>
var reg = [];
reg[0] = /[a-z]/; // 小写
reg[1] = /[A-Z]/; // 大写
reg[2] = /\d/; // 数字
reg[3] = /[^a-zA-Z\d]/; // 特殊符号
reg[4] = /^.{6,10}$/; // 长度为 6~10var str = "Aa8+001";
alert(myTest(str,reg));str = "8aA001+";
alert(myTest(str,reg));str = "8888888";
alert(myTest(str,reg));function myTest(str,reg){
var flag = true;
for(var i = 0;(e = reg[i]);i++){
flag = flag && reg[i].test(str);
}
return flag;
}
</script><body>
</body></html>
reg[1] = /[A-Z]/; // 大写
reg[2] = /\d/; // 数字
reg[3] = /[^a-zA-Z\d]/; // 特殊符号
reg[4] = /^.{6,10}$/; // 长度为 6~10
用这几个用|组合起来就可以了意思就是: /[a-z]|[A-Z]|[\d]|[^a-zA-Z\d]|[^.{6,10}$]/;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>Table</title>
</head><script type="text/javascript">
function check() {
var txt = document.frm.txt.value;
var regexs = [
/[a-z]/,
/[A-Z]/,
/[0-9]/,
/[^a-zA-Z0-9]/
]
var r = txt.length >= 6 && txt.length <= 10;
for(var i = 0; r && i < regexs.length; i++) {
r = txt.search(regexs[i]) > -1;
}
alert(r);
document.frm.txt.focus();
document.frm.txt.select();
return false;
}window.onload = function() {
document.frm.txt.focus();
}
</script><body>
<form name="frm" action="#" onsubmit="return check();">
Value: <input type="text" name="txt"><br/>
<input type="button" onclick="check();" value="check">
</form>
</body>
</html>
但我认为这显然是不对的,楼主根据需求自己改一下吧。
var reg = /[a-z]|[A-Z]|[\d]|[^a-zA-Z\d]|[^.{6,10}$]/;
str = "a";// LZ 要求的“不少一个大写字母,一个小写字母,一个数字,一个特殊符号, 字符串的长度为6-10”
alert(reg.test(str));
</script>
这个表达式有人说正解的话,就不得不说两句了。姑且不说最后一个 [^.{6,10}$] 写错了(估计是 ^.{6,10}$ 的笔误)之外先不看这一块。先看看前面的部分,| 是表示这一堆当中选择一组进行匹配,其中只要满足一组时,匹配就是 true,
这显然是不正确的。[a-z]|[A-Z]|[\d]|[^a-zA-Z\d]这个只是匹配小写字母,或者大写字母,或者数字,或者是非上述字符,只要满一个条件就是
true 了,这并不能满足楼主的至少一个小写字母、一个大写字母、一个数字和一个其他的字符。正则表达式中只有表示“或”的结构,没有表示“与”的结构,表示“与”时一般采用多重顺序
环视结构,即 (?=),但这个在 IE 6 中有 bug 因此不能使用(在其他语言和 Firefox 下面
是正常的),我们只能采用其他变通的办法。
是啊,不知道是他们理解错了,还是我们理解错了,呵呵。如果是我理解错了,望各位能海涵 ^_^