最近打算在用户改密表单 或 创建账号表单中,对输入的密码进行强度检测功能。在网上找了两篇比较实用的资源,本人对这些资源进行了整合。下面给出了几种效果图:

说明,这里的强中弱三种效果是使用背景图片实现的

基于jquery实现的5款登录验证码组件 jquery密码验证_密码强度检测

说明,这个案例中是使用纯CSS效果实现

基于jquery实现的5款登录验证码组件 jquery密码验证_密码强度检测_02

效果3:本人整理上面资源后的效果(使用纯CSS实现)

说明:为什么要整理?因为效果1中的是背景图片实现,虽然资源资源以及上传到CSDN网站,本人没有积分下载不了。于是本人想了想是否可以整合一下,将效果1中的表单保留,强中弱三种效果参考效果二中的源码,最后将两个案例中的代码整合了,使用纯CSS去实现它了。

基于jquery实现的5款登录验证码组件 jquery密码验证_jquery_03

整理后源码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/jquery.metadata.js"></script>
<script src="js/jquery.validate.js"></script>
<script src="js/jquery.validate.cn.js"></script>
<script src="js/jquery.validate.methods.js"></script>
<style>
.pass-txt{float:left;width:62px;margin-left:5px;text-align:center;color:#b0adad;font-size:12px;}
.pass-default{float:left;background:#d6d3d3;width:62px;height:15px;border-radius: 15px;;margin-top:5px;_margin-top:0px;margin-left:5px;_height:2px;font-size:0px;}	
.pass-weak{background: #ff3300;}
.pass-medium{background: #099;}
.pass-strong{background: #060;}
</style>
<script>
$.validator.setDefaults({
    submitHandler: function() {
      alert("提交事件!");
    }
});
$().ready(function() {
   $('#password').keyup(function () { 
        var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g"); 
        var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g"); 
        var enoughRegex = new RegExp("(?=.{6,}).*", "g"); 
        if (false == enoughRegex.test($(this).val())) {            
            $('#pwdLevel_3').removeClass('pass-strong'); 
            $('#pwdLevel_2').removeClass('pass-medium'); 
            $('#pwdLevel_1').removeClass('pass-weak'); 
             //密码小于六位的时候,密码强度图片都为灰色 
        } 
        else if (strongRegex.test($(this).val())) { 
           $('#pwdLevel_1').addClass('pass-weak'); 
            $('#pwdLevel_2').addClass('pass-medium'); 
            $('#pwdLevel_3').addClass('pass-strong'); 
             //密码为八位及以上并且字母数字特殊字符三项都包括,强度最强 
        } 
        else if (mediumRegex.test($(this).val())) { 
            $('#pwdLevel_1').addClass('pass-weak'); 
            $('#pwdLevel_2').addClass('pass-medium'); 
            $('#pwdLevel_3').removeClass('pass-strong'); 
             //密码为七位及以上并且字母、数字、特殊字符三项中有两项,强度是中等 
        } 
        else { 
 			$('#pwdLevel_1').addClass('pass-weak'); 
            $('#pwdLevel_2').removeClass('pass-medium'); 
            $('#pwdLevel_3').removeClass('pass-strong'); 
            //如果密码为6为及以下,就算字母、数字、特殊字符三项都包括,强度也是弱的 
        } 
        //return true; 
    }); 
	// 自定义校验规则
	/**
   $.validator.addMethod("passwordCheck",function(value, element){  
        var returnVal = false;  
        var chrnum = /^[0-9]*$/;
        //return this.optional(element) || (chrnum.test(value));
   },"必须填入数字");  
   */
 
// 在键盘按下并释放及提交后验证提交表单
  $("#signupForm").validate({
	    rules: {
	    
	      username: {
	        required: true,
	        minlength: 2
	      },
	      password: {
	        required: true,
			passwordCheck:true,
	        minlength: 5
	      },
	      confirm_password: {
	        required: true,
	        minlength: 5,
	        equalTo: "#password"
	      } 
	    },
	    messages: {
	    
	      username: {
	        required: "请输入用户名",
	        minlength: "用户名必需由两个字母组成"
	      },
	      password: {
	        required: "请输入密码",
	        minlength: "密码长度不能小于 5 个字母"
	      },
	      confirm_password: {
	        required: "请输入密码",
	        minlength: "密码长度不能小于 5 个字母",
	        equalTo: "两次密码输入不一致"
	      } 
	    }
	});
});
</script>
<style>
.error{
	color:red;
}
</style>
</head>
<body>
<form class="cmxform" id="signupForm" method="get" action="">
  <fieldset>
    <legend>表单</legend>
   
    <p>
      <label for="username">用户名</label>
      <input id="username" name="username" type="text">
    </p>
    <p>
      <label for="password">密码</label>
      <input id="password" name="password" type="password">
    </p>
	 
       <p>
	    
      		<div class="pass-default" id='pwdLevel_1'> </div>
			<div class="pass-default" id='pwdLevel_2'> </div>
			<div class="pass-default" id='pwdLevel_3'> </div>
			<br />
			<div class="pass-txt"> 弱</div>
			<div class="pass-txt"> 中</div>
			<div class="pass-txt"> 强</div>
       </p>
    <p>
      <label for="confirm_password">验证密码</label>
      <input id="confirm_password" name="confirm_password" type="password">
    </p>
   
   
    <p>
      <input class="submit" type="submit" value="提交">
    </p>
  </fieldset>
</form>
</body>
</html>

 

jquery validation 自定义验证密码复杂度

jQuery.validator.addMethod("isPassword", function(value, element) {
	    var reg =  /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,20}$/;
	    return reg.test(value);
	}, "密码中必须包含含数字、字母、特殊符号");

调用:
password: {
	minlength: 6,
	isPassword: true
}

说明:校验规则(密码复杂度)可以根据源码中的正则表达式校验规则进行调整。 

补充:之前工作中,密码强度校验

校验规则: 密码必须是 大小字母、小写字母、特殊字符、数字这 4 种种的至少三种组合。

java正则表达式

^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9])).+
public boolean isRightPass(String password){
		 //新密码不符合系统要求:必须是数字、大写字母、小写字母、符号这4种中的至少3种组合!
    	 String regex ="^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9])).+";
    	 Pattern pa =Pattern.compile(regex);
		 Matcher m = pa.matcher(password);
		 boolean b = m.find();
		 return b;
     }