jQuery验证插件 - 密码检查 - 最低要求 - 正则表达式

bay*_*phi 21 regex passwords jquery jquery-validate

我的密码检查器有点问题.

有一些领域的注册表格.我使用jQuery Validate插件来验证用户输入.

除密码验证外,它都有效:

密码应满足一些最低要求:

  • 最小长度:8 - >我只使用'minlength:8'
  • 至少一个小写字符
  • 至少一位数
  • 允许的字符:AZ az 0-9 @*_ - .!

目前我使用此代码验证密码:

$.validator.addMethod("pwcheck",
function(value, element) {
   return /^[A-Za-z0-9\d=!\-@._*]+$/.test(value);
});
Run Code Online (Sandbox Code Playgroud)

本规范适用于允许的字符,但不适用于最低要求.我知道您可以使用例如(?=.*[a-z])小写要求.但我只是不让它发挥作用.

如果我添加(?=.*[a-z])整个代码不再起作用.我需要知道如何正确地将代码添加到现有代码中.

谢谢您的回答!

这是完整的代码

<script>
                $(function() {
                    $("#regform").validate({
                        rules: {
                            forename: {
                                required: true
                            },
                            surname: {
                                required: true
                            },
                            username: {
                                required: true
                            },
                            password: {
                                required: true,
                                pwcheck: true,
                                minlength: 8
                            },
                            password2: {
                                required: true,
                                equalTo: "#password"
                            },
                            mail1: {
                                required: true,
                                email: true
                            },
                            mail2: {
                                required: true,
                                equalTo: "#mail1"
                            }
                        },
                        messages: {
                            forename: {
                                required: "Vornamen angeben"
                            },
                            surname: {
                                required: "Nachnamen angeben"
                            },
                            username: {
                                required: "Usernamen angeben"
                            },
                            password: {
                                required: "Passwort angeben",
                                pwcheck: "Das Passwort entspricht nicht den Kriterien!",
                                minlength: "Das Passwort entspricht nicht den Kriterien!"
                            },
                            password2: {
                                required: "Passwort wiederholen",
                                equalTo: "Die Passwörter stimmen nicht überein"
                            },
                            mail1: {
                                required: "Mail-Adresse angeben",
                                email: "ungültiges Mail-Format"
                            },
                            mail2: {
                                required: "Mail-Adresse wiederholen",
                                equalTo: "Die Mail-Adressen stimmen nicht überein"
                            }
                        }
                    });

                    $.validator.addMethod("pwcheck",
                        function(value, element) {
                            return /^[A-Za-z0-9\d=!\-@._*]+$/.test(value);
                    });
                });
                </script>
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 41

如果我添加(?=.*[a-z])整个代码不再起作用.

在这里添加:

/^(?=.*[a-z])[A-Za-z0-9\d=!\-@._*]+$/
Run Code Online (Sandbox Code Playgroud)

但是,如果没有前瞻,这样做会容易得多:

$.validator.addMethod("pwcheck", function(value) {
   return /^[A-Za-z0-9\d=!\-@._*]*$/.test(value) // consists of only these
       && /[a-z]/.test(value) // has a lowercase letter
       && /\d/.test(value) // has a digit
});
Run Code Online (Sandbox Code Playgroud)


Ket*_*ari 10

您可以创建自己的自定义 jQuery 验证规则。它针对所有条件返回100% 准确度的有效消息。

$.validator.addMethod("strong_password", function (value, element) {
    let password = value;
    if (!(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$%&])(.{8,20}$)/.test(password))) {
        return false;
    }
    return true;
}, function (value, element) {
    let password = $(element).val();
    if (!(/^(.{8,20}$)/.test(password))) {
        return 'Password must be between 8 to 20 characters long.';
    }
    else if (!(/^(?=.*[A-Z])/.test(password))) {
        return 'Password must contain at least one uppercase.';
    }
    else if (!(/^(?=.*[a-z])/.test(password))) {
        return 'Password must contain at least one lowercase.';
    }
    else if (!(/^(?=.*[0-9])/.test(password))) {
        return 'Password must contain at least one digit.';
    }
    else if (!(/^(?=.*[@#$%&])/.test(password))) {
        return "Password must contain special characters from @#$%&.";
    }
    return false;
});
Run Code Online (Sandbox Code Playgroud)