【JavaScript 学习--08】Js用户新密码正则验证

在写JS代码时候,经常会遇到验证用户输入的情形, 下面代码是我现在项目中需要验证用户更改新密码。
新密码规则:
- 密码长度[8, 128),
- 新密码不能和老密码相同,
- 必须包含数字和字母
- 必须包含至少一个小写字母,
- 必须包含至少一个大写字母,
- 至少有两个数字,
- 不能有非法字符(<>{}|\^`:)

const FORBIDDEN_CHARACTERS = "<>{}|\\^`:";
const LOCAL_USER_PASSWORD_MIN_LENGTH = 8;
const LOCAL_USER_PASSWORD_MAX_LENGTH = 128;

function newPasswordIsValid(newPassword) {
    if (newPassword.length >= LOCAL_USER_PASSWORD_MIN_LENGTH &&
        newPassword.length < LOCAL_USER_PASSWORD_MAX_LENGTH &&
        newPassword !== $("#applicationLoginUsername").val() &&
        isAlphaNumeric(newPassword) &&
        hasOneUpperAndOneLowerCaseCharacter(newPassword) &&
        hasAtleastTwoDigits(newPassword) &&
        !hasTwoSameConsecutiveCharacters(newPassword) &&
        !hasInvalidCharacters(newPassword)) {
        return true;
    }
    return false;
}

let isAlphaNumeric = function(string) {
    return /^[0-9a-zA-Z]+$/.test(string);
};

let hasOneUpperAndOneLowerCaseCharacter = function(string) {
    return /(.*[A-Z]+.*)/.test(string) && /(.*[a-z]+.*)/.test(string);
};

let hasAtleastTwoDigits = function(string) {
    return /(.*\d.*\d)/.test(string);
};

let hasTwoSameConsecutiveCharacters = function(string) {
    for (var i = 1; i < string.length; ++i) {
        if (string[i] === string[i - 1])
            return true; 
    }
    return false;
};

let hasInvalidCharacters = function(string) {
    for (var i = 1; i < string.length; ++i) {
        const asciiCode = string[i].charCodeAt(0);
        if (asciiCode >= 0 && asciiCode <= 20) {
            return true;
        }

        if (asciiCode === 127) {
            return true;
        }

        if (FORBIDDEN_CHARACTERS.includes(string[i]) {
            return true;
        }
    }
    return false;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木瓜~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值