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标签不被解析的问题
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?

