用javascript校验密码强度级别,可以检测字母、数字和英文键盘符号,strength值越大则密码越安全。正则表达式版本:
/*
* @return {number} pwdStrength
* -101: too short
* -102: too long
* 1: weak
* 2: medium
* 3: strong
*/
var testPwdStrength1 = function(pwdText){
var pwdStrength = 0;
if (typeof pwdText === "string") {
if (pwdText.length < 8) {
// 密码过短
pwdStrength = -101;
} else if (pwdText.length > 20) {
// 密码过长
pwdStrength = -102;
} else {
var containsDigitPattern = /^.*?[\d]+.*$/g;
var containsLetterPattern = /^.*?[a-zA-Z]+.*$/g;
var containsCharPattern = /^.*?[`~@#\$%\^&\*\(\)\-_=\+\\\|;:'",<\.>\/\?].*$/g;
if (containsCharPattern.test(pwdText)) {
pwdStrength++;
}
if (containsLetterPattern.test(pwdText)) {
pwdStrength++;
}
if (containsDigitPattern.test(pwdText)) {
pwdStrength++;
}
}
} else {
// 密码无效
pwdStrength = -404;
}
return pwdStrength;
};
不使用正则表达式,基于每个密码字符的ascii值的比较的版本:
var testPwdStrength2 = function(pwdText) {
var pwdStrength = 0;
if(pwdText.length < 8) {
pwdStrength = -101; // Too short
} else if(pwdText.length > 32) {
pwdStrength = -102; // Too long
} else {
var tempCharCode = 0, lowerCaseLetterCounter = 0, upperCaseLetterCounter = 0, digitCounter = 0, signalCounter = 0;
for(var i = 0; i < pwdText.length; i++) {
tempCharCode = pwdText.charCodeAt(i);
if(tempCharCode > 32 && tempCharCode < 127) { // Visible char
if(tempCharCode >= 48 && tempCharCode <= 57) {// 0-9
++digitCounter;
} else if(tempCharCode >= 65 && tempCharCode <= 90) {// A-Z
++upperCaseLetterCounter;
} else if(tempCharCode >= 97 && tempCharCode <= 122) {// a-z
++lowerCaseLetterCounter;
} else {
++signalCounter;
}
} else { // Invalid char
pwdStrength = -404;
break;
}
}
if(upperCaseLetterCounter > 0 || lowerCaseLetterCounter > 0) {
++pwdStrength;
}
if(digitCounter > 0) {
++pwdStrength;
}
if(signalCounter > 0) {
++pwdStrength;
}
}
return pwdStrength;
};
以上代码在chrome/firefox/ie9下测试通过。函数返回值表示密码的组成情况(字母/数字/符号),如果需要确定密码的具体组合情况可以酌情修改上述代码实现。
分享到:
相关推荐
### 二、JavaScript密码强度检测代码解读 #### 1. `CharMode` 函数 该函数用于判断每个字符的类型,返回一个代表该字符类型的数值。具体来说: - 如果字符是数字 (ASCII值介于48-57),则返回1; - 如果字符是大写...
### 密码强度验证知识点详解 #### 一、引言 在互联网日益发达的今天,密码作为用户身份验证的重要组成部分,其安全性变得尤为重要。为了确保密码的安全性,很多系统都会对用户设置的密码进行强度验证,以确保其...
### JavaScript密码强度判断代码解析 在现代Web应用中,用户数据的安全性至关重要,而密码作为保护用户账户的第一道防线,其强度直接关系到账户的安全。本文将深入解析一段JavaScript代码,该代码用于评估用户输入...
这种工具通常会根据密码的长度、字符复杂性(包括大小写字母、数字、特殊符号的组合)、常见字典攻击的抵抗力等因素来评估密码的安全等级。 标签“源码”表明博文中可能包含了用于实现这一功能的源代码,这可能是用...
通过分析密码的各种特征(如长度、包含的字符类型等),给出一个综合评分,并通过不同的符号来表示密码强度。 **2. 实现逻辑:** - **密码长度判断:** 根据密码的长度为密码评分。长度不同,得分也不同。 - **...
1. 特殊字符和表情的定义:在编程和数据处理中,特殊字符通常指的是那些非字母、非数字、非常见符号的字符,它们可能影响程序的正常运行。表情则通常是指表情符号,这些符号广泛用于社交媒体、即时通讯等领域,但...
- 通常,密码强度检测会考虑以下因素:长度、数字、字母、符号的混合、连续字符和重复字符的出现等。 - 插件会根据计算出的分数动态更新密码强度指示器(如进度条或文字提示),让用户了解当前密码的安全级别。 2...
为了提高密码强度,通常建议用户设置的密码至少包含8个字符,并且包含大写字母、小写字母、数字以及特殊符号,且不应与用户名相同。通过这种多维度的检查,密码强度验证插件能够在用户输入密码时提供实时反馈,促使...
在本篇介绍中,将阐述如何使用JavaScript实现密码强度的实时显示功能。密码强度显示是一个对用户非常有用的功能,它可以指导用户创建一个符合特定安全标准的密码。通常,一个强密码能够帮助更好地保护用户帐户的安全...
我们可以定义一系列规则来检查密码是否包含特定类型的字符,如数字、字母、符号等。例如,一个简单的正则表达式`/^(?=.*\d)(?=.*[a-zA-Z]).{6,}$/`将要求密码至少包含一个数字和一个字母,长度至少为6。 2. **事件...
在JavaScript中实现一个密码强度检测的功能是现代前端开发中常见的需求。通常网站会要求用户设置的密码符合一定的复杂度,比如至少包含大小写字母、数字和特殊字符中的一种或多种。本文将介绍两种用JavaScript实现...
在JavaScript中,`test()`方法可以用来检测字符串是否符合某个正则表达式: ```javascript var input = document.getElementById('inputField').value; if (!pattern.test(input)) { alert('输入包含非法字符,请...
密码强度通常依据密码中包含的字符类型(数字、字母、特殊符号)的数量来决定。根据题目描述,我们将密码强度分为三个等级: 1. **弱密码**:仅包含一种类型的字符(数字、字母或特殊符号)。 2. **中等密码**:...
本文将详细介绍如何使用JavaScript实现密码强度校验功能,并通过不同的视觉效果反馈给用户当前输入密码的安全等级。 #### 密码强度分类 本示例中的密码强度分为四个等级: 1. **无密码状态**:当用户未输入任何字符...
js实现密码强度检测是指通过JavaScript编程语言编写的一段代码,用于在用户输入密码时,根据密码的组成、长度等因素判断密码的安全性级别,一般是分为“弱”、“中”、“强”三个等级。在用户注册或更改密码时,这种...
JavaScript 中有多种文字量,包括数字、字符串和布尔值。这些基本的数据类型是构建更复杂数据结构的基础。 - **数字**:JavaScript 只有一种数字类型,即 `Number` 类型,它可以表示整数或浮点数。需要注意的是,...
在IT行业中,尤其是在Web开发领域,JavaScript是一种广泛使用的编程语言,用于实现客户端的交互...它简化了检测字符串中emoji的过程,使得开发者可以更专注于他们的核心业务逻辑,而不必担心Unicode字符集的复杂性。
本文提出的“基于字符熵的JavaScript代码混淆自动检测方法”是一种新颖的检测策略,它结合了字符熵和N-gram模型的特性,能够在不依赖大量标注数据的情况下,有效地检测混淆的JavaScript代码。字符熵是一种衡量信息不...
- **后续字符**:除了首字符之外,其他字符可以是下划线`_`、美元符号`$`、任何字母或数字。 **示例**: ```javascript var test; // 合法 var $test; // 合法 var _test2; // 合法 ``` ##### 2. 命名方法 - **...