我正在使用密码验证器脚本,并且我对长度、字母、大写字母、数字和空格做得很好。但我不知道如何检测特殊字符。
这是我的 jquery 脚本:
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$('#password1').keyup(function() {
var pswd = $(this).val();
//validate the length
if(pswd.length < 6 ){ $('#length').removeClass('valid').addClass('invalid'); }
//validate letter
if(pswd.match(/[A-z]/)){ $('#letter').removeClass('invalid').addClass('valid'); }
//validate capital letter
if(pswd.match(/[A-Z]/)){ $('#capital').removeClass('invalid').addClass('valid'); }
//validate number
if(pswd.match(/\d/)){ $('#number').removeClass('invalid').addClass('valid'); }
//validate no spaces
if(pswd.match(/\s/)){ $('#spaces').removeClass('valid').addClass('invalid'); }
//validate symbols
if(pswd.match(/\D/)){ $('#symbol').removeClass('invalid').addClass('valid'); }
});
});
</script>
我承认我是从某个我不记得的地方离线得到的。当我测试脚本时,我注意到每当键入字母时符号总是被验证。
if(pswd.match(/\D/)){ 错误吗?
最佳答案
\D
只是表示“不是数字”,因此任何字母都可以。如果您想要“非字母数字”,则需要 [^a-zA-Z0-9]
。旁注,您的 [A-z]
应该是 [A-Za-z]
或者整个内容应该是 /[a-z]/i
关于Javascript 匹配字符串中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11855498/