jQuery Validate插件 – 密码检查 – 最低要求 – 正则表达式

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

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

除密码validation外,它都有效:

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

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

目前我使用此代码validation密码:

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

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

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

谢谢您的回答!

这是完整的代码

  $(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); }); });  

如果我添加(?=.*[az]) ,整个代码将不再起作用。

在这里添加:

 /^(?=.*[az])[A-Za-z0-9\d=!\-@._*]+$/ 

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

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

那么你可以使用{8,}代替“+”至少8个字符,没有最大值或更好但是{8,20}最少8个,最多20个。

实际上,虽然我没有看到试图将所有validation压缩到单个正则表达式中的价值。 如果你打破它,它会使维护更容易,更容易出错,并且它使你能够向用户报告密码失败的具体原因,而不是整个要求。

你可以把它分成几张支票

 //proper length value.length >= 8 //only allowed characters /^[A-Za-z0-9\d=!\-@._*]+$/.test(value) //has a digit /\d/.test(value) //has a lowercase letter /[az]/.test(value) 

我不熟悉jQuery Validation插件,但我认为您可以为每个失败的测试返回有用的消息。

如果要检查确认密码最小字符validation,则可以使用

   

密码validation可以使用多个规则,例如:

 var _validatePassword = function (validateUserNameRules, inputModel) { //bolean parameter validateUserNameRules -> true/false //this method recive a model like this: //inputModel.userName -> string //inputModel.password -> string //inputModel.password2 -> String var ResultModel = { ResultId: 1, //1 success Message: "Password is correct." }; if (validateUserNameRules && inputModel.userName == "") { ResultModel.ResultId = 2; ResultModel.Message = "Error: User name cannot be blank."; return (ResultModel); } var re = /^\w+$/; if (validateUserNameRules && !re.test(inputModel.userName)) { ResultModel.ResultId = 2; ResultModel.Message = "Error: Username must contain only letters, numbers and underscores."; return (ResultModel); } if (inputModel.password != "" && inputModel.password == inputModel.password2) { if (inputModel.password.length < 6) { ResultModel.ResultId = 2; ResultModel.Message = "Error: Password must contain at least six characters."; return (ResultModel); } if (validateUserNameRules && inputModel.password == inputModel.userName) { ResultModel.ResultId = 2; ResultModel.Message = "Error: Password must be different from the Account Name."; return (ResultModel); } re = /[0-9]/; if (!re.test(inputModel.password)) { ResultModel.ResultId = 2; ResultModel.Message = "Error: Password must contain at least one number (0-9)."; return (ResultModel); } re = /[az]/; if (!re.test(inputModel.password)) { ResultModel.ResultId = 2; ResultModel.Message = "Error: Password must contain at least one lowercase letter (az)."; return (ResultModel); } re = /[AZ]/; if (!re.test(inputModel.password)) { ResultModel.ResultId = 2; ResultModel.Message = "Error: Password must contain at least one uppercase letter (AZ)."; return (ResultModel); } } else { ResultModel.ResultId = 2; ResultModel.Message = "Error: Please check that you've entered and confirmed your password."; return (ResultModel); } return (ResultModel); //success password validation!! };