簡體   English   中英

使用javascript和regex進行密碼驗證不起作用

[英]Password validation with javascript and regex doesn't work

我試圖用javascript中的正則表達式功能來驗證密碼。 我將按鈕默認設置為禁用,並且當密碼有效時,我想啟用該按鈕。

驗證無效。

在這里您可以看到javascript代碼:

function validPW() {
if (isValid("passwort",document.getElementById("passwordRegistrationID").value)) {
    document.getElementById('passwordRegistrationID').disabled=false;
}

function isValid (type, toValidate){
switch (type){
    case "grossbuchstabeVorhanden" :
        var grossbuchstabe = /[A-Z]+/;
        return grossbuchstabe.test (toValidate);
        break;
    case "kleinbuchstabenVorhanden" :
        var kleinbuchstabe = /[a-z]+/;
        return kleinbuchstabe.test (toValidate);
    case "zahlenVorhanden" :
        var zahlen = /[0-9]+/;
        return zahlen.test (toValidate);
    case "sonderzeichenVorhanden" :
        var sonderzeichen = /[?!$%&/=<>_]+/;
        return sonderzeichen.test (toValidate);
    case "laengeRjichtig" :
        var laenge =/.{9,}/;
        return laenge.test (toValidate);
    case "passwort":
        return isValid("grossbuchstabeVorhanden",toValidate) && isValid("kleinbuchstabenVorhanden",toValidate)
            && isValid("zahlenVorhanden",toValidate) && isValid("sonderzeichenVorhanden",toValidate)
            && isValid("laengeRjichtig",toValidate)
}

這是HTML表格

<form role="form" action="/user/doRegistration" method="post" class="login-form">
    <div class="form-group" id="usernameRegistrationDiv">
        <label class="sr-only" for="form-usernameRegistration">Username</label>
        <input type="email" name="form-usernameRegistration" required="required" placeholder="Username..." class="form-usernameRegistration form-control"
            id="form-usernameRegistration">
    </div>
    <div class="form-group" id="passwordRegistrationDiv">
        <label class="sr-only" for="form-passwordRegistration">Password</label>
        <input type="password" name="form-passwordRegistration" required="required" placeholder="Password..." class="form-passwordRegistration form-control"
            id="passwordRegistrationID" oninput="validPW();">
    </div>
    <div class="form-group">
        <label class="sr-only" for="form-password-registration">Password repeat</label>
        <input type="password" name="form-password-registration" required="required" placeholder="Password repeat..." class="form-password-registration form-control"
            id="form-password">
    </div>
    <button type="submit" id="buttonRegistration" class="btn" disabled> Sign up!</button>
</form>

錯誤信息:

registration:97 Uncaught ReferenceError: validPW is not defined

盡管您發布的功能缺少2個右花括號,但該驗證在我的測試中仍能正常工作,盡管我認為這些花括號存在於您的本地副本中,但從技術上講它不是有效的JavaScript。 應該是這樣的:

  function validPW() { if (isValid("passwort",document.getElementById("passwordRegistrationID").value)) { document.getElementById('passwordRegistrationID').disabled=false; } function isValid (type, toValidate){ switch (type){ case "grossbuchstabeVorhanden" : var grossbuchstabe = /[AZ]+/; return grossbuchstabe.test (toValidate); break; case "kleinbuchstabenVorhanden" : var kleinbuchstabe = /[az]+/; return kleinbuchstabe.test (toValidate); case "zahlenVorhanden" : var zahlen = /[0-9]+/; return zahlen.test (toValidate); case "sonderzeichenVorhanden" : var sonderzeichen = /[?!$%&/=<>_]+/; return sonderzeichen.test (toValidate); case "laengeRjichtig" : var laenge =/.{9,}/; return laenge.test (toValidate); case "passwort": return isValid("grossbuchstabeVorhanden",toValidate) && isValid("kleinbuchstabenVorhanden",toValidate) && isValid("zahlenVorhanden",toValidate) && isValid("sonderzeichenVorhanden",toValidate) && isValid("laengeRjichtig",toValidate) } } } 

否則,在使用有效和無效的密碼進行快速測試時,我找不到任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM