这是我试过的...... 如果我只检查输入的值是否小于8,它是否有效,但不能检查它是否包含至少1个字母和1个数字。我究竟做错了什么 ? = /
$(document).ready(function() {
var jVal = {
'passWord' : function() {
$('body').append('<div id="nameInfo" class="info"></div>');
var nameInfo = $('#nameInfo');
var ele = $('#password');
var pos = ele.offset();
ra = /^[A-Za-z]+$/;
re = /^[0-9]+$/;
nameInfo.css({
top: pos.top - 3,
left: pos.left + ele.width() + 15
});
if (ele.val().length < 8 & re.test(ele.value) & ra.test(ele.value)) {
jVal.errors = true;
nameInfo.removeClass('correct').addClass('error').html('← too short').show();
ele.removeClass('normal').addClass('wrong');
}
else {
nameInfo.removeClass('error').addClass('correct').html('√').show();
ele.removeClass('wrong').addClass('normal');
}
}
}
$('#password').change(jVal.passWord);
});
答案 0 :(得分:6)
ra
检查密码是否完全由字母组成。 re
检查密码是否完全由数字组成。它们是相互排斥的,因此不可能都是真的。
相反,请使用ra = /[a-z]/i; re = /[0-9]/;
。
编辑:此外,由于您使用的是jQuery,因此您应该在ele.val()
上进行测试,而不是ele.value
。
答案 1 :(得分:2)
您可以使用单个正则表达式执行所有操作:
/^(?=.*\d.*)(?=.*[a-z].*)\w{8,}$/i
前两个部分检查整个字符串中的数字和a-z字符,然后最后一部分确保它至少有8个字符。如果需要,您可以将最后\w
更改为.
以允许特殊字符。