[英]creating a regex to password validate
我需要帮助创建一个正则表达式:至少 1 个数字,只有英文字母,至少一个特殊字符 (@,#$%^&*()-+_)。 没有空格,也没有连续 3 个相同的字母。
泰!
function passwordValidated() {
var password = document.getElementById("password").value;
var passMsg = document.getElementById("passMsg");
if (password.length > 6 && password.length > 12) {
passMsg.innerHTML = "password must contain above 6 charcters and below 12";
return false;
}
var specialChar = /[@!#$%^&*()-+_]/;
if (!specialChar.test(password)) {
passMsg.innerHTML = "password must contain a special character";
return false;
}
var numberCheck = /(?=\S* [\d])/;
if (!numberCheck.test(password)) {
passMsg.innerHTML = "password must contain at least one number";
return false;
}
passMsg.innerHTML = "";
return true;
}
这是我现在的代码。
const validators: ((s: string) => true | string)[] = [
s => s.length >= 6 || "password must contain above 6 charcters and below 12",
s => s.length <= 12 || "password must contain above 6 charcters and below 12",
s => /[@!#$%^&*()-+_]/.test(s) || "password must contain a special character",
s => /\d/.test(s) || "password must contain at least one number",
s => !/(.)\1\1/.test(s) || "not 3 same letters in a row",
s => !/\s/.test(s) || "no spaces please",
s => /^[@!#$%^&*()-+_\w]+$/.test(s) || "only letters in English"
]
function validate (value: string, validators: ((s: string) => true | string)[]) {
for (let v of validators) {
let r = v(value);
if (r !== true) return r;
}
return true;
}
console.log([
validate('asd', validators),
validate('asdhakufhskuydgsiyug', validators),
validate('asdj$hgsd', validators),
validate('asdj$4h gsd', validators),
validate('asdj$4hgsd', validators),
])
受 Quasar(Vue 框架)输入字段验证的启发
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.