javascript 检验密码强度 -- 字符 数字 符号

本文详细介绍了如何使用JavaScript实现密码强度级别的校验,包括正则表达式版本和基于ASCII值比较的版本,适用于Chrome/Firefox/IE9等浏览器。

   用javascript校验密码强度级别,可以检测字母、数字和英文键盘符号,strength值越大则密码越安全。正则表达式版本:

 

/*
 * @return {number} pwdStrength
 * -101: too short
 * -102: too long
 * 1: weak
 * 2: medium
 * 3: strong
 */
var testPwdStrength1 = function(pwdText){
    var pwdStrength = 0;
    if (typeof pwdText === "string") {
        if (pwdText.length < 8) {
            // 密码过短
            pwdStrength = -101;
        } else if (pwdText.length > 20) {
                // 密码过长
                pwdStrength = -102;
        } else {
                var containsDigitPattern = /^.*?[\d]+.*$/g;
                var containsLetterPattern = /^.*?[a-zA-Z]+.*$/g;
                var containsCharPattern = /^.*?[`~@#\$%\^&\*\(\)\-_=\+\\\|;:'",<\.>\/\?].*$/g;
                if (containsCharPattern.test(pwdText)) {
                    pwdStrength++;
                }
                if (containsLetterPattern.test(pwdText)) {
                    pwdStrength++;
                }
                if (containsDigitPattern.test(pwdText)) {
                    pwdStrength++;
                }
        }
    } else {
        // 密码无效
        pwdStrength = -404;
    }
    return pwdStrength;
};
 

不使用正则表达式,基于每个密码字符的ascii值的比较的版本:

 

var testPwdStrength2 = function(pwdText) {
	var pwdStrength = 0;
	if(pwdText.length < 8) {
		pwdStrength = -101; // Too short
	} else if(pwdText.length > 32) {
		pwdStrength = -102; // Too long
	} else {
		var tempCharCode = 0, lowerCaseLetterCounter = 0, upperCaseLetterCounter = 0, digitCounter = 0, signalCounter = 0;
		for(var i = 0; i < pwdText.length; i++) {
			tempCharCode = pwdText.charCodeAt(i);
			if(tempCharCode > 32 && tempCharCode < 127) { // Visible char
				if(tempCharCode >= 48 && tempCharCode <= 57) {// 0-9
					++digitCounter;
				} else if(tempCharCode >= 65 && tempCharCode <= 90) {// A-Z
					++upperCaseLetterCounter;
				} else if(tempCharCode >= 97 && tempCharCode <= 122) {// a-z
					++lowerCaseLetterCounter;
				} else {
					++signalCounter;
				}
			} else { // Invalid char
				pwdStrength = -404;
				break;
			}
		}
		if(upperCaseLetterCounter > 0 || lowerCaseLetterCounter > 0) {
			++pwdStrength;
		}
		if(digitCounter > 0) {
			++pwdStrength;
		}
		if(signalCounter > 0) {
			++pwdStrength;
		}
	}
	return pwdStrength;
};
 

 

   以上代码在chrome/firefox/ie9下测试通过。函数返回值表示密码的组成情况(字母/数字/符号),如果需要确定密码的具体组合情况可以酌情修改上述代码实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值