检查输入是否包含最少8个字符,最少1个字母和1个字母

时间:2012-02-10 16:32:14

标签: javascript html regex

这是我试过的...... 如果我只检查输入的值是否小于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('&larr; too short').show();
            ele.removeClass('normal').addClass('wrong');
        }

        else {
            nameInfo.removeClass('error').addClass('correct').html('&radic;').show();
            ele.removeClass('wrong').addClass('normal');
        }
    }

}
$('#password').change(jVal.passWord);
});

2 个答案:

答案 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更改为.以允许特殊字符。