[蓝莓商城]Js中使用正则表达式判断密码强度

项目地址:蓝莓商城
今天在写注册页面的前端。
密码判断部分采用正则表达式来进行判断。

密码校验原则是
  • 1.长度不能低于八位
  • 2.不能为纯数字
  • 3.最大长度无限制
  • 4.由特殊字符,数字,字母构成

    长度判断
/***
 * 判断输入的字符是否大于8位
 * @param str
 * @returns true : 输入大于8位
 *          false: 输入小于8位
 */
function isLenMaxThan8(str){
    var regex = /.{8,}/;
    return regex.test(str);
}
纯数字判断
/***
 * 判断输入的字符串是否为纯数字
 * @param str
 * @returns true : 输入为纯数字
 *          false: 输入不是数字
 */
function isAllNum(str){
    var regex = /^\d+$/;
    return regex.test(str);
}
纯字母判断
/*字母构成*/
    var regex  = /^[a-zA-Z]+$/;
    var passwordStrength = null;

    if(regex.test(password)){
        passwordStrength = 0;
        console.log("全部为纯字母 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }
纯特殊字符判断
/*特殊字符构成*/

    var regex  = /^[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E\x3A-\x40\x5B-\x60\x7B-\x7E]+$/;
    if(regex.test(password)){
        passwordStrength = 0;
        console.log("全部为纯特殊字符 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }
密码强度判断
/***
 * 密码强度校验
 * @returns  0:低等强度密码,单纯字母或者单纯特殊字符
 *           1:中等强度密码,数字/字母/特殊字符(\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E)两两组合
 *           2:高等强度,包含三种
 */

function checkPasswordStrength(password){

    /*字母构成*/
    var regex  = /^[a-zA-Z]+$/;
    var passwordStrength = null;

    if(regex.test(password)){
        passwordStrength = 0;
        console.log("全部为纯字母 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }
    /*特殊字符构成*/

    var regex  = /^[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E\x3A-\x40\x5B-\x60\x7B-\x7E]+$/;
    if(regex.test(password)){
        passwordStrength = 0;
        console.log("全部为纯特殊字符 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }

    var regex  = /^[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+$/;
    if(regex.test(password)){
        passwordStrength = 0;
        console.log("全部为纯特殊字符 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }
    /*特殊字符和字母构成*/
    /*(?=.*?[a-z])是肯定型顺序环视,限定当前位置的后面,能匹配.*?[a-z]*/
    var regex1  =  /^(?=.*?[a-zA-Z])(?=.*?[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E])[a-zA-Z\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+$/;
    /*特殊数字和字母构成*/
    var regex2  =  /^(?=.*?[a-zA-Z])(?=.*?[0-9])[a-zA-Z0-9]+$/;
    /*特殊数字和和字符构成*/
    var regex3  =  /^(?=.*?[0-9])(?=.*?[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E])[0-9\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+$/;
    if(regex1.test(password)){
        passwordStrength = 1;
        console.log("特殊字符和字母构成 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }
    if(regex2.test(password)){
        passwordStrength = 1;
        console.log("特殊数字和字母构成 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }
    if(regex3.test(password)){
        passwordStrength = 1;
        console.log("特殊数字和和字符构成 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }

    var regex  =  /^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E])[a-zA-Z0-9\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+$/;
    if(regex.test(password)){
        passwordStrength = 2;
        console.log("特殊数字和和字符和字母构成 passwordStrength = " + passwordStrength );
        return passwordStrength;
    }
    return null;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值