<!DOCTYPE html>
<html lang="zh-tw">
<head>
<meta charset="UTF-8"/>
<title>html 練習</title>
<script>
function chkP(){
var tPD=document.getElementById("idP").value;
var re=/^(?=.*\d)(?=.*[a-zA-Z])(?=.*\W).+$/;
if(tPD==" ")
window.alert("不能有空白");
else if(tPD.length <=5)
window.alert("至少要6個字");
else if(re.test(tPD))
window.alert("正確!");
}
</script>
</head>
<body>
密碼:<input type="text" id="idP" size="30" maxlength="30"/>
<br><br>
<input type="button" value="密碼檢查" onclick="chkP(); "/>
</body>
</html>
請問各位高手,,,以上是我的code ,但很明顯,我的正則表示式有錯,我該如何才能“檢查不可空白,至少6個字,必須包含英文字母、數字、特殊字元!”
謝謝!
ps:現在還差“檢查不可空白”這項沒完成~“~
大家讲道理2017-04-10 12:50:07
/[\t]+/
这个正则进行测试,如果为真说明内容中有空白。以下为针对提问者原问题的回答:
你写的是
javascript var reg = /^[a-zA-Z0-9]{6,}$/;
这个正则的意思是:全部以大小写字母或数字组成,至少6个字符。与你的需求有两处不符:
- 你要的是『必須包含英文字母、數字、特殊字元!』而实际上实现的是必须全部以XXXX组成,范围扩大了
- 你的要求中有特殊字符,但这个正则中没有(其实特殊字符并不是一个明确的范围,你最好把范围列举出来)
由于不知道你的特殊字符到底有哪些,我就先仅以!@#$%这四个作为特殊字符,给出一个例子
javascript var reg = /[a-zA-Z0-9!@\$%]{6,}/;
如果你有其他特殊字符,直接添加进去即可。注意,其中的$写作\$的原因是$在正则中有特殊含义,需要转义一下。
大家讲道理2017-04-10 12:50:07
我不太会写正则,好像也没见过正则可以用AND之类的算法,所以我觉得是不是可以拆开来写呢,这样提示也更具体。
var str = document.getElementById("idP").value;
var has_letter = /[a-zA-Z]+/.test(str);
var has_number = /[0-9]+/.test(str);
var has_symbol = /[!@#$%^&*()]+/.test(str);
var enough_size = /[0-9a-zA-Z!@#$%^&*()]{6,}/.test(str);