我尝试在JavaScript中使用正则表达式来验证给定的密码是否包含字母、数字和特殊字符。然而,我试过的所有东西都不起作用
我试过使用
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@"#%$&])[A-Za-z0-9!@"#%$&]{8,30}$/gm并为字母、数字和特殊字符创建单独的正则表达式变量:
let alpha = /^[A-Za-z]+$/i
let numer = /^[0-9]+$/i
let special = /^[!@#$%^&*(),.?;":{}|<>']/i当我将password.match(正则表达式)登录到控制台时,我总是看到null
发布于 2019-10-19 00:51:44
我个人倾向于使用单独的正则表达式,您当前的正则表达式的问题是在开始时使用^,在结束时使用$。这意味着密码从头到尾必须只包含[A-Za-z]。然后检查密码是否从头到尾只包含[0-9]。
const regexes = {
alpha: /[A-Za-z]/,
number: /[0-9]/,
special: /[!@#$%^&*(),.?;":{}|<>']/,
length: /^.{8,30}$/
};
["dgXHUYuDdp", "zMv4qQfZj3", "4JXyrsq!J0", "a5Z!"].forEach(password => {
let valid = Object.values(regexes).every(regex => password.match(regex));
console.log(
"password: " + JSON.stringify(password) + "\n" +
"valid: " + valid
);
});
https://stackoverflow.com/questions/58454802
复制相似问题