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

发布时间 - 2026-01-11 03:25:46    点击率:

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 = "";
   }

页面实现效果如下:

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

总结

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


# angular  # 用户密码强度  # angularjs2 ng2 密码隐藏显示的实例代码  # Angularjs修改密码的实例代码  # AngularJS前端页面操作之用户修改密码功能示例  # angular仿支付宝密码框输入效果  # 在 Angular2 中实现自定义校验指令(确认密码)的方法  # AngularJs验证重复密码的方法(两种)  # angularjs 表单密码验证自定义指令实现代码  # 特殊字符  # 多个  # 英文  # 小编  # 上传  # 都要  # 在此  # 两种  # 但在  # 也可  # 点击这里  # 给大家  # 较多  # 可以直接  # 到时候  # 再去  # 无法下载  # 所述  # 给我留言  # 感谢大家 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用withoutEvents方法临时禁用模型事件  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  使用spring连接及操作mongodb3.0实例  用yum安装MySQLdb模块的步骤方法  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel如何使用Livewire构建动态组件?(入门代码)  网站图片在线制作软件,怎么在图片上做链接?  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  北京网站制作公司哪家好一点,北京租房网站有哪些?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  如何在阿里云域名上完成建站全流程?  中山网站制作网页,中山新生登记系统登记流程?  如何快速启动建站代理加盟业务?  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何在服务器上三步完成建站并提升流量?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何登录建站主机?访问步骤全解析  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  中山网站推广排名,中山信息港登录入口?  如何在阿里云通过域名搭建网站?  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  高端建站如何打造兼具美学与转化的品牌官网?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  如何自定义建站之星网站的导航菜单样式?  java获取注册ip实例  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  如何挑选优质建站一级代理提升网站排名?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  如何为不同团队 ID 动态生成多个非值班状态按钮  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  如何在Tomcat中配置并部署网站项目?  网站页面设计需要考虑到这些问题  如何在万网主机上快速搭建网站?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel如何使用查询构建器?(Query Builder高级用法)  用v-html解决Vue.js渲染中html标签不被解析的问题  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?