我想对密码执行 JavaScript 验证。
它必须满足以下条件:
- 至少 6 个字符长
- 至少 1 个大写字母
- 至少 1 个小写字母
- 至少 1 个号码
- 至少 1 个标点符号
我想对密码执行 JavaScript 验证。
它必须满足以下条件:
这是使用正则表达式数组的一种方法:
/**
* Returns true if pw is a valid password.
*/
function isValid(pw) {
if (! pw) {
return false;
}
var rgx = [
/.{6,}/,
/[A-Z]/,
/[a-z]/,
/[0-9]/,
/[@#$&*^%!+=\/\\[\]|?.,<>)(;:'"~`]/
];
for (var i = 0; i < rgx.length; i++) {
if (rgx[i].test(pw) === false) {
return false;
}
}
return true;
}
您可以通过将正则表达式数组作为参数传递来使其更加灵活。
这是更具可读性的学术版本:
function isValid(s) {
// check for null or too short
if (!s || s.length < 6) {
return false;
}
// check for a number
if (/[0-9]/.test(s) === false) {
return false;
}
// check for a capital letter
if (/[A-Z]/.test(s) === false) {
return false;
}
// check for a lowercase letter
if (/[a-z]/.test(s) === false) {
return false;
}
// check for punctuation mark
if (/[@#$&*^%!+=\/\\[\]|?.,<>)(;:'"~`]/.test(s) === false) {
return false;
}
// all requirements have been satisfied
return true;
}
这是一个工作示例。
可以使用单个正则表达式完成验证:
var pw = "letMe1n!"; // Read this from an <input> field
// Validation:
if (/^(?=.*[.,?!])(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{6,}/.test(pw)) {
// The password is valid!
}
[.,?!]
如果需要,可以扩展标点字符集。