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

Cannot get JavaScript password regex validation to work

本文关键字:正则表达式 验证 工作 密码 JavaScript      更新时间:2023-09-26

我正在验证用户输入的密码。它只能是字母和数字,我必须使用match方法…即使这不是最好的方法……我必须使用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>

您的问题似乎在这段代码中。

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

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

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

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

^[A-Za-z]+$

如果你想要字母和数字,那么使用:

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

顺便说一句,正如大家指出的那样,你使用的是regx而不是regex