正则表达式javascript验证

时间:2012-07-05 16:45:57

标签: javascript regex

我有以下正在运行的JavaScript代码:

<script>
function validate(form) {
    // Shortcut to save writing
    var pwd = form.elements.lgps.value;

    // Check length
    if(8 > pwd.length || pwd.length > 16)
        return false;

    // Check for at least 1 lowercase letter
    var rgx = /[a-zA-Z]+/;
    if(!rgx.test(pwd))
        return false;

    // Check for at least 1 digit
    rgx = /\d+/;
    if(!rgx.test(pwd))
        return false;

    // Check for no spaces
    rgx = /\s/;
    if(rgx.test(pwd))
        return false;

    return true;
}
</script>

以下是我的表格:

<form method="post" action="406.php" language="javascript" 
    name="myform" id="myform" onsubmit="return validate(this);">

如果以上所有内容都失败了,我想添加一条消息提醒,并且还要在我的表单中另一个字段进行验证。所以基本上我有一个用户名字段和一个密码字段。 我希望密码字段长度在8到20个字符之间,并且至少包含1个数字。

3 个答案:

答案 0 :(得分:0)

看起来很好,除了第一个正则表达式测试大写和小写的事实,只需括起if语句并添加

    alert('Password not right') 
在返回语句之前

。显然,对于每个返回,您可以相应地更改警报。

答案 1 :(得分:0)

function validatePwd(form) {
    var pwd = form.elements.lgps.value;

    if(8 > pwd.length || pwd.length > 16){
        alert("Your password must be 8-16 characters in length");
        return false;
    }

    var rgx = /[a-zA-Z]+/;
    if(!rgx.test(pwd)){
        alert("Your need at least 1 lowercase letter");
        return false;
    }

    rgx = /\d+/;
    if(!rgx.test(pwd)){
        alert("You need at least 1 digit");
        return false;
    }

    rgx = /\s/;
    if(rgx.test(pwd)){
        alert("You can't have spaces");
        return false;
    }

    return true;
}

function validateUnm(form){
    var unm = form.elements.lgem.value;

    if(3 > unm.length || unm.length > 20){
        alert("Your username must be 3-20 characters in length");
        return false;
    }

    //and more conditions....

    return true;
}

你可以这样称呼:

<form onsubmit="validatePwd(this);validateUnm(this)">

答案 2 :(得分:0)

下面是一个利用jQuery并将验证要求存储到object名为tests的解决方案。

根据所需元素提供的值(在本例中为ID为pass的输入)将根据每个属性中声明的测试进行检查。如果测试通过,则该属性设置为1以指示true。如果测试失败,则将该属性设置为0以指示false

然后遍历该对象以检查传递了哪些属性以及哪些属性失败。如果至少有一个测试失败,则使用alert()消息通知用户无效标准。

<强> HTML:

<input type="text" id="pass" />

<强> jQuery的:

function validatePassword(pwd) { 
    var errors = [];

    var tests = {
        '- Min/Max Length of 8-16 characters': function(){
            return (pwd.length < 8 || pwd.length > 16 ? 0 : 1);
        }(),
        '- Contains Alpha-numeric characters': function(){
            rgx = /[a-zA-Z]+/;
            return (!rgx.test(pwd) ? 0 : 1);
        }(),
        '- Contains 1 or more Digits': function(){
            rgx = /\d+/;
            return (!rgx.test(pwd) ? 0 : 1);
        }(),
        '- Contains No Spaces': function(){
            rgx = /\s/;
            return (rgx.test(pwd) ? 0 : 1);
        }()
    };

    for(result in tests ){
        if(tests[result] == 0){
            errors.push(result);
        }
    }

    if(errors.length > 0){
                alert('Please correct your password to meet the following criteria:\n' + errors.join('\n'));
    }
}

$(function(){
    $('#pass').blur(function(){
        validatePassword($(this).val());
    });
});

演示:http://jsfiddle.net/Rmm6d/