无法使用JavaScript密码正则表达式验证工作

时间:2014-08-11 00:13:50

标签: javascript regex forms validation

我正在尝试验证用户输入的密码。它只能是字母和数字,我必须使用匹配方法......即使它不是最好的方法......我必须使用match()。我错过了一些能够正常工作的东西。没有数字或特殊字符只有字母。我对javascript了解不多。

<script type="text/JavaScript">
    function chkPwd() {
    var pwd = document.form1.pwd;
    var pwdMsg = document.getElementById('pwdMsg'); 

    regex = /[^a-zA-Z]/;
        var pwd1 = pwd.value;
        if(!pwd1.match(regex)) {
            pwdMsg.innerHTML = "Must contain letters only!"
            pwd.select();
            return;
        }else{ 
            pwdMsg.innerHTML = "";
        }
    }   
</script>
</head>

<body>
        <form name="form1" action="" method="post">


            <p> Password: <br>
                <input type="text" name="pwd" onchange="chkPwd()" />
                <span id="pwdMsg"></span></p>
            <p>
                <input type="button" value="chkPass" onclick="chkPwd()">
            </p>
        </form>
        <div id="results"></div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

您的问题似乎出现在此部分代码中。

regex = /[^a-zA-Z]/;
var pwd1 = pwd.value;
if(!pwd1.value.match(regx)) {

您将pwd1设置为pwd.value,但接下来一行,您正在访问pwd1.value。这意味着您正在高效地执行pwd.value.value。此外,您正在使用regx,您应该使用regex。此外,您的if条件似乎不需要!。我认为你的意思是这样做。

regex = /[^a-zA-Z]/;
var pwd1 = pwd.value;
if(pwd1.match(regex)) {

答案 1 :(得分:0)

如果你只想要字母,你应该使用这个正则表达式:

^[A-Za-z]+$

如果您想要字母和数字,请使用:

^[A-Za-z0-9]+$

顺便说一句,正如大家指出你使用regx代替regex