繁体   English   中英

创建一个正则表达式来验证密码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM