jQuery Validate 插件 - 密码检查 - 最低要求 - 正则表达式 [英] jQuery Validate plugin - password check - minimum requirements - Regex
问题描述
我的密码检查器有点问题.
I've got a little problem with my password-checker.
有一个包含一些字段的注册表单.我使用 jQuery Validate 插件来验证用户输入.
There's got a registration form with some fields. I use jQuery Validate plugin to validate user-inputs.
除了密码验证之外,一切正常:
It all works except the password-validation:
密码应满足一些最低要求:
The password should meet some minimum requirements:
- 最小长度:8 -> 我只使用 'minlength: 8'
- 至少一个小写字符
- 至少一位数字
- 允许的字符:A-Z a-z 0-9 @ * _ - .!
目前我使用此代码验证密码:
At the moment I use this code to validate the password:
$.validator.addMethod("pwcheck",
function(value, element) {
return /^[A-Za-z0-9d=!-@._*]+$/.test(value);
});
本准则适用于允许的字符,但不适用于最低要求.我知道您可以将例如 (?=.*[a-z])
用于小写要求.但我就是不让它工作.
This Code works for the allowed characters but not for minimum requirements.
I know that you can use for example (?=.*[a-z])
for a lower-case-requirement. But I just don't get it to work.
如果我添加 (?=.*[a-z])
整个代码将不再起作用.我需要知道如何正确地将代码添加到现有代码中.
If I add (?=.*[a-z])
the whole code doesn't work anymore. I need to know how to properly add the code to the existing one.
感谢您的回答!
这是完整的代码
<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-9d=!-@._*]+$/.test(value);
});
});
</script>
推荐答案
如果我添加
(?=.*[a-z])
整个代码将不再起作用.
If I add
(?=.*[a-z])
the whole code doesn't work anymore.
在此处添加:
/^(?=.*[a-z])[A-Za-z0-9d=!-@._*]+$/
但是,如果没有前瞻,这样做会容易得多:
However, it's much easier to do this without a lookahead:
$.validator.addMethod("pwcheck", function(value) {
return /^[A-Za-z0-9d=!-@._*]*$/.test(value) // consists of only these
&& /[a-z]/.test(value) // has a lowercase letter
&& /d/.test(value) // has a digit
});
这篇关于jQuery Validate 插件 - 密码检查 - 最低要求 - 正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!