我试图验证使用正则表达式的密码。 如果我们拥有所有的字符字母密码得到更新。 我在哪里去了? 正则表达式吧?
function validatePassword() {
var newPassword = document.getElementById('changePasswordForm').newPassword.value;
var minNumberofChars = 6;
var maxNumberofChars = 16;
var regularExpression = /^[a-zA-Z0-9!@#$%^&*]{6,16}$/;
alert(newPassword);
if(newPassword.length < minNumberofChars || newPassword.length > maxNumberofChars){
return false;
}
if(!regularExpression.test(newPassword)) {
alert("password should contain atleast one number and one special character");
return false;
}
}
使用积极的前瞻断言:
var regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,16}$/;
没有它,你的正则表达式目前只匹配你有6至16个有效字符,它不会验证它至少有一个数字, 至少一个特殊字符。 这就是上述的前瞻是。
-
(?=.*[0-9])
-断言一个串具有至少一个数目; -
(?=.*[!@#$%^&*])
-断言的字符串至少有一个特殊字符。
function validatePassword() {
var p = document.getElementById('newPassword').value,
errors = [];
if (p.length < 8) {
errors.push("Your password must be at least 8 characters");
}
if (p.search(/[a-z]/i) < 0) {
errors.push("Your password must contain at least one letter.");
}
if (p.search(/[0-9]/) < 0) {
errors.push("Your password must contain at least one digit.");
}
if (errors.length > 0) {
alert(errors.join("\n"));
return false;
}
return true;
}
有下面的答案,因为它不会因缺少[同时检查字母和数字]检查整个字符串一定的问题,这是正确的版本
你可以让你自己的正则表达式JavaScript验证
/^ : Start
(?=.{8,}) : Length
(?=.*[a-zA-Z]) : Letters
(?=.*\d) : Digits
(?=.*[!#$%&? "]) : Special characters
$/ : End
(/^
(?=.*\d) //should contain at least one digit
(?=.*[a-z]) //should contain at least one lower case
(?=.*[A-Z]) //should contain at least one upper case
[a-zA-Z0-9]{8,} //should contain at least 8 from the mentioned characters
$/)
Example:- /^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{7,}$/
我用分8字母密码下面的脚本,与至少一个符号,大写和小写字母和一个数字
function checkPassword(str)
{
var re = /^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/;
return re.test(str);
}
不要试图做太多一步到位。 保持每个规则分开。
function validatePassword() {
var p = document.getElementById('newPassword').value,
errors = [];
if (p.length < 8) {
errors.push("Your password must be at least 8 characters");
}
if (p.search(/[a-z]/i) < 0) {
errors.push("Your password must contain at least one letter.");
}
if (p.search(/[0-9]/) < 0) {
errors.push("Your password must contain at least one digit.");
}
if (errors.length > 0) {
alert(errors.join("\n"));
return false;
}
return true;
}
如果您检查长度seperately,你可以做到以下几点:
var regularExpression = /^[a-zA-Z]$/;
if (regularExpression.test(newPassword)) {
alert("password should contain atleast one number and one special character");
return false;
}
正则表达式的密码 :
/^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[a-zA-Z!#$%&? "])[a-zA-Z0-9!#$%&?]{8,20}$/
我花了一段时间才能找出的限制,但我做到了!
限制:(注:我已经使用>> <<和展现的重要人物)
- 最少8个字符
{>>8,20}
- 最大20个字符
{8,>>20}
- 至少一个大写字符
(?=.*[AZ])
- 至少一个小写字符
(?=.*[az])
- 至少一个数位
(?=.*\d)
- 至少有一个特殊字符
(?=.*[a-zA-Z >>!#$%&? "<<])[a-zA-Z0-9 >>!#$%&?<< ]
文章来源: Javascript regular expression password validation having special characters