Web开发使用Angular实现用户密码强度判别的方法


Posted in Javascript onSeptember 27, 2017

Web前端使用Angular实现用户密码强度判别小记

用户密码合法条件:

1、8~16个字符

2、只能包含数字,字母和”_” “.”(即不能含有非法特殊字符)

3、数字,字母和”_” “.” 至少包含两种

实现过程:

长度检测-注:要区分中文和英文,中文两个字节,英文一个字节,在密码输入的时候是不能输入中文,但在检测用户名的使用,就需要区分中英文

// 获取字符串长度:中文也可正常获取
function GetStrLength(strData)
{
 if(!strData){
  return 0;
 }
 var length = 0;
 for (var i=0; i<strData.length; i++) { 
  var char = strData.charCodeAt(i); 
  //单字节加1 
  if ((char >= 0x0001 && char <= 0x007e) || (0xff60 <= char && char <= 0xff9f)) 
  { 
   length++; 
  } 
  else
  { 
   length+=2; 
  } 
 } 
 return length;
}

检测是否包含字母:

function isIncludeLiter(strData)
{ if(!strData){
  return false;
 }
 var reg = /[a-z]/i;
 if (!reg.test(strData))
 {
  return false;
 }
 return true;
}

检测是否包含数字:

function isIncludeNumber(strData)
{
 if(!strData){
  return false;
 }
 var reg = /[0-9]/;
 if (!reg.test(strData))
 {
  return false;
 }
 return true;
}

检测是否包含特殊字符:这里包含所有特殊字符

function isIncludeSChar(strData)
{
 if(strData == ""){
  return false;
 }
 // 全部特殊字符
 var reg = new RegExp("[`~!@#$^&*%()_+=|{}':;',\\-\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]") 
 return reg.test(strData);
}

统计指定特殊字符的个数:这里只统计特殊字符 “-” “.”

function calcCharCount(strData) {
 var matchResult = {
  lineCounts: 0, //'-'个数
  dotCounts: 0 // '.'个数
 };
 if(!strData){
  return JSON.stringify(matchResult);
 }
 var lineChar = "-", dotChar = "\\."; // 要统计的字符
 var lineRegex = new RegExp(lineChar, 'g'), dotRegex = new RegExp(dotChar, 'g'); // 使用g表示整个字符串都要匹配
 var lineResult = strData.match(lineRegex);
 matchResult.lineCounts = !lineResult ? 0 : lineResult.length;
 var dotResult = strData.match(dotRegex);
 matchResult.dotCounts = !dotResult ? 0 : dotResult.length;
 return JSON.stringify(matchResult);
}

密码强度判断条件:

弱 ? 密码中仅包含数字、字母;
中 ? 密码中包含数字、字母和任一特殊字符;
强 ? 口令中包含数字、字母和多个特殊字符;

代码较多,直接整体粘贴复制:

var len = GetStrLen($scope.newPswd); // 获取字符串长度
   var matchResult = JSON.parse(calcCharCount($scope.newPswd)); // 查找 '-' '.' 特殊字符的数量
   // 条件1 判断
   $scope.newPswdValidOne = (len >= 8 && len <= 16);
   // 条件2 判断
   $scope.newPswdValidTwo = !isIncludeSChar($scope.newPswd);
   // 包含 '-' '.' 特殊字符
   $scope.newPswdHasSChar = $scope.newPswdValidTwo && (matchResult.lineCounts > 0 || matchResult.dotCounts > 0);
   // 包含字母
   $scope.newPswdHasLiter = isIncludeLiter($scope.newPswd);
   // 包含数字
   $scope.newPswdHasNumber = isIncludeNum($scope.newPswd);
   // 条件3 判断
   $scope.newPswdValidThree = ($scope.newPswdHasNumber && $scope.newPswdHasLiter) || // 数字和字母
   ($scope.newPswdHasNumber && $scope.newPswdHasSChar) || // 数字和特殊字符
   ($scope.newPswdHasLiter && $scope.pswdValidChars) || // 字母和特殊字符
   ($scope.newPswdHasLiter && $scope.newPswdHasNumber && $scope.pswdValidChars); // 数字、字母和特殊字符
   // 新密码是否合法
   $scope.newPswdValid = $scope.newPswdValidOne && $scope.newPswdValidTwo && $scope.newPswdValidThree;
   // 密码等级判断
   // 3.密码中包含数字、字母和多个特殊字符时,密码强度强
   if ($scope.newPswdValid && $scope.newPswdHasNumber && $scope.newPswdHasLiter && (matchResult.lineCounts > 0 && matchResult.dotCounts > 0)) {
    $scope.newPswdRank = 3;
    $scope.newPswdRankText = "强";
   }
   // 2.密码中包含数字、字母和任一特殊字符时,密码强度中;
   else if ($scope.newPswdValid && $scope.newPswdHasNumber && $scope.newPswdHasLiter && (matchResult.lineCounts > 0 || matchResult.dotCounts > 0)) {
    $scope.newPswdRank = 2;
    $scope.newPswdRankText = "中";
   }
   // 1.密码中仅包含数字、字母时,密码强度弱;
   else if ($scope.newPswdValid && $scope.newPswdHasNumber && $scope.newPswdHasLiter) {
    $scope.newPswdRank = 1;
    $scope.newPswdRankText = "弱";
   }
   // 密码不合法
   else {
    $scope.newPswdRank = 0;
    $scope.newPswdRankText = "";
   }

页面实现效果如下:

Web开发使用Angular实现用户密码强度判别的方法

Web开发使用Angular实现用户密码强度判别的方法

Web开发使用Angular实现用户密码强度判别的方法

Web开发使用Angular实现用户密码强度判别的方法

Web开发使用Angular实现用户密码强度判别的方法

代码中的 $scope 是AngularJS中的变量,如果不使用AngularJS,可以直接去掉,代码点击这里(由于资源上传看后暂时看不到资源列表,所以暂时无法下载,等待资源上传成功,会更新地址,到时候你们再去下载吧)进行下载

总结

以上所述是小编给大家介绍的Web开发使用Angular实现用户密码强度判别的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript写的一个链表实现代码
Oct 25 Javascript
热点新闻滚动特效的js代码
Aug 17 Javascript
javascript中clone对象详解
Dec 03 Javascript
常见的javascript跨域通信方法
Dec 31 Javascript
用JS实现图片轮播效果代码(一)
Jun 26 Javascript
AngularJs 指令详解及示例代码
Sep 01 Javascript
React Native实现简单的登录功能(推荐)
Sep 19 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
jQuery实现的简单拖动层示例
Feb 22 Javascript
基于JavaScript实现的快速排序算法分析
Apr 14 Javascript
Three.js实现简单3D房间布局
Dec 30 Javascript
js利用拖放实现添加删除
Aug 27 Javascript
基于复选框demo(分享)
Sep 27 #Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
Sep 27 #Javascript
angular内置provider之$compileProvider详解
Sep 27 #Javascript
详解Node.js利用node-git-server快速搭建git服务器
Sep 27 #Javascript
微信小程序 循环及嵌套循环的使用总结
Sep 26 #Javascript
Node.js dgram模块实现UDP通信示例代码
Sep 26 #Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 #Javascript
You might like
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
如何在python中实现线性回归
2020/08/10 Python
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
师范生个人推荐信
2013/11/29 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
个人租房协议书样本
2014/10/01 职场文书
2014年科研工作总结
2014/12/03 职场文书
实习指导老师意见
2015/06/04 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
装修安全责任协议书
2016/03/22 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python