首页 >> js开发 >> jsjavascrpt密码强度校验函数详解js大全
jsjavascrpt密码强度校验函数详解js大全
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
最近写了个密码强度验证的函数,主要验证以下内容1、密码最小和最大长度2、连续字符串出现的次数3、字符连续出现的次数4、禁止特定的字符串作为密码5、密码字符串的组合强度要求,必须含有大小写字母,必须含有数字,必须含有特殊字符6、输入密码必须与确认密码一致7、支持禁止使用用户名作为密码8、是否存在连续性的字符串,是否存在逆序性的字符串
(function(window, verifyPwd){
window.verifyPwd = {
/*最小长度*/
minLength
: 6
/*最大长度*/
maxLength
: 18,
/*字符重复次数*/
repeatCount : 0,
/*连续字符*/
seriesCount : 3,
/*特定过滤字符串*/
filter
: [
"qaz",
"wsx",
"edc",
"qwe",
"asd",
"zxc"
],
/*允许的字符串*/
arrRegex : ['[0-9]', '[a-z]', '[A-Z]', '[!@#$%^&*()_-]' ],
/**
* 验证密码
* @param userName
用户名
* @param pwd
密码
* @param confirmPwd
确认密码
* @returns {boolean}
*/
verify : function(userName, pwd, confirmPwd){
userName = trim(userName);
pwd
= trim(pwd);
if(!userName || userName.length == 0){
alert('请先输入用户名');
return false;
}
if(!pwd || pwd.length == 0){
alert('请输入密码');
return false;
}
if (pwd.length < this.minLength) {
alert('密码长度至少需要' + this.minLength + '位');
return false;
}
if (pwd.length > this.maxLength) {
alert('密码长度超过'+ this.maxLength +'位');
return false;
}
/*判断输入密码与确认密码是否一致*/
if(confirmPwd && confirmPwd.length > 0){
if(pwd != confirmPwd){
alert('输入密码与确认密码不一致');
return false;
}
}
/*判断密码中是否存在用户名*/
if (pwd.indexOf(userName) >= 0) {
alert('密码中不能出现用户名为' + userName);
return false;
}
if (!eval('/' + this.arrRegex[0] + '/').test(pwd)) {
alert('密码没有包含数字');
return false;
}
if (!eval('/' + this.arrRegex[1] + '/').test(pwd)) {
alert('密码没有包含小写字母');
return false;
}
if (!eval('/' + this.arrRegex[2] + '/').test(pwd)) {
alert('密码没有包含大写字母');
return false;
}
if (!eval('/' + this.arrRegex[3] + '/').test(pwd)) {
alert('密码没有包含!@#$%&*_等至少一个特殊字符');
return false;
}
/*判断是否存在过滤性字符串*/
if(this.filter.length > 0){
for(var i = 0, length = this.filter.length; i < length; i++){
var value = this.filter[i];
if(pwd.indexOf(value) < 0){
continue;
}
alert("密码中不允许含有"+ value);
return false;
}
}
/*判断是否存在重复字符串*/
if(this.isRepeate(pwd)){
alert('密码中不能出现重复字符');
return false;
}
/*判断是否存在连续性字符串*/
if(this.isSeries(pwd)){
alert('密码中不能存在'+ this.seriesCount +'个以上的连续字符');
return false;
}
return true;
},
/**
* 是否存在重复字符串
* @param pwd
密码
* @returns {boolean}
*/
isRepeate : function(pwd){
if(pwd && pwd.length > 0){
for(var i = 0, length = pwd.length; i < length; i++){
var currentChar = pwd.charAt(i);
var prevChar
= i == 0 ? "" : pwd.charAt(i - 1);
if(currentChar == prevChar){
return true;
}
}
}
return false;
},
/**
* 是否存在连续性字符串
* @param pwd
密码
* @returns {boolean}
*/
isSeries : function(pwd){
if(pwd && pwd.length > 0) {
/*自身算起*/
var ascSeriesCount = 1;
var descSeriesCount= 1;
/*存在顺序型的连续性的字符串*/
for (var i = 0, length = pwd.length; i < length; i++) {
var currentCharCode = pwd.charCodeAt(i);
var prevCharCode
= i == 0 ? "" : pwd.charCodeAt(i - 1);
if(currentCharCode == prevCharCode + 1){
ascSeriesCount++;
if(ascSeriesCount == this.seriesCount){
return true;
}
} else{
ascSeriesCount = 1;
}
}
/*存在逆序性的连续性的字符串*/
for (var i = pwd.length - 1; i >= 0; i--) {
var currentCharCode = pwd.charCodeAt(i);
var prevCharCode
= (i - 1) >= 0 ? pwd.charCodeAt(i - 1) : "";
if(currentCharCode + 1 == prevCharCode){
descSeriesCount++;
if(descSeriesCount == this.seriesCount){
return true;
}
} else{
descSeriesCount = 1;
}
}
}
return false;
},
/**
* 初始化方法
* @param userNameId
用户id
* @param pwdId
*/
init : function(userNameId, pwdId){
$("#"+ pwdId).on("blur", function(){
var userName = $("#"+ userNameId).val();
var pwd = this.value;
if(userName.length == 0){
$("#"+ userNameId).focus();
alert("请输入用户名");
return false;
}
/*若验证正确,进行加密处理*/
if(this.verify(userName, pwd)){
pwd = md5(pwd);
$("#"+ pwdId).val(pwd);
}
});
}
}
})(window, undefined);
(function(window, verifyPwd){
window.verifyPwd = {
/*最小长度*/
minLength
: 6
/*最大长度*/
maxLength
: 18,
/*字符重复次数*/
repeatCount : 0,
/*连续字符*/
seriesCount : 3,
/*特定过滤字符串*/
filter
: [
"qaz",
"wsx",
"edc",
"qwe",
"asd",
"zxc"
],
/*允许的字符串*/
arrRegex : ['[0-9]', '[a-z]', '[A-Z]', '[!@#$%^&*()_-]' ],
/**
* 验证密码
* @param userName
用户名
* @param pwd
密码
* @param confirmPwd
确认密码
* @returns {boolean}
*/
verify : function(userName, pwd, confirmPwd){
userName = trim(userName);
pwd
= trim(pwd);
if(!userName || userName.length == 0){
alert('请先输入用户名');
return false;
}
if(!pwd || pwd.length == 0){
alert('请输入密码');
return false;
}
if (pwd.length < this.minLength) {
alert('密码长度至少需要' + this.minLength + '位');
return false;
}
if (pwd.length > this.maxLength) {
alert('密码长度超过'+ this.maxLength +'位');
return false;
}
/*判断输入密码与确认密码是否一致*/
if(confirmPwd && confirmPwd.length > 0){
if(pwd != confirmPwd){
alert('输入密码与确认密码不一致');
return false;
}
}
/*判断密码中是否存在用户名*/
if (pwd.indexOf(userName) >= 0) {
alert('密码中不能出现用户名为' + userName);
return false;
}
if (!eval('/' + this.arrRegex[0] + '/').test(pwd)) {
alert('密码没有包含数字');
return false;
}
if (!eval('/' + this.arrRegex[1] + '/').test(pwd)) {
alert('密码没有包含小写字母');
return false;
}
if (!eval('/' + this.arrRegex[2] + '/').test(pwd)) {
alert('密码没有包含大写字母');
return false;
}
if (!eval('/' + this.arrRegex[3] + '/').test(pwd)) {
alert('密码没有包含!@#$%&*_等至少一个特殊字符');
return false;
}
/*判断是否存在过滤性字符串*/
if(this.filter.length > 0){
for(var i = 0, length = this.filter.length; i < length; i++){
var value = this.filter[i];
if(pwd.indexOf(value) < 0){
continue;
}
alert("密码中不允许含有"+ value);
return false;
}
}
/*判断是否存在重复字符串*/
if(this.isRepeate(pwd)){
alert('密码中不能出现重复字符');
return false;
}
/*判断是否存在连续性字符串*/
if(this.isSeries(pwd)){
alert('密码中不能存在'+ this.seriesCount +'个以上的连续字符');
return false;
}
return true;
},
/**
* 是否存在重复字符串
* @param pwd
密码
* @returns {boolean}
*/
isRepeate : function(pwd){
if(pwd && pwd.length > 0){
for(var i = 0, length = pwd.length; i < length; i++){
var currentChar = pwd.charAt(i);
var prevChar
= i == 0 ? "" : pwd.charAt(i - 1);
if(currentChar == prevChar){
return true;
}
}
}
return false;
},
/**
* 是否存在连续性字符串
* @param pwd
密码
* @returns {boolean}
*/
isSeries : function(pwd){
if(pwd && pwd.length > 0) {
/*自身算起*/
var ascSeriesCount = 1;
var descSeriesCount= 1;
/*存在顺序型的连续性的字符串*/
for (var i = 0, length = pwd.length; i < length; i++) {
var currentCharCode = pwd.charCodeAt(i);
var prevCharCode
= i == 0 ? "" : pwd.charCodeAt(i - 1);
if(currentCharCode == prevCharCode + 1){
ascSeriesCount++;
if(ascSeriesCount == this.seriesCount){
return true;
}
} else{
ascSeriesCount = 1;
}
}
/*存在逆序性的连续性的字符串*/
for (var i = pwd.length - 1; i >= 0; i--) {
var currentCharCode = pwd.charCodeAt(i);
var prevCharCode
= (i - 1) >= 0 ? pwd.charCodeAt(i - 1) : "";
if(currentCharCode + 1 == prevCharCode){
descSeriesCount++;
if(descSeriesCount == this.seriesCount){
return true;
}
} else{
descSeriesCount = 1;
}
}
}
return false;
},
/**
* 初始化方法
* @param userNameId
用户id
* @param pwdId
*/
init : function(userNameId, pwdId){
$("#"+ pwdId).on("blur", function(){
var userName = $("#"+ userNameId).val();
var pwd = this.value;
if(userName.length == 0){
$("#"+ userNameId).focus();
alert("请输入用户名");
return false;
}
/*若验证正确,进行加密处理*/
if(this.verify(userName, pwd)){
pwd = md5(pwd);
$("#"+ pwdId).val(pwd);
}
});
}
}
})(window, undefined);以上就是本文的全部内容,希望对大家的学习有所帮助。
(function(window, verifyPwd){
window.verifyPwd = {
/*最小长度*/
minLength
: 6
/*最大长度*/
maxLength
: 18,
/*字符重复次数*/
repeatCount : 0,
/*连续字符*/
seriesCount : 3,
/*特定过滤字符串*/
filter
: [
"qaz",
"wsx",
"edc",
"qwe",
"asd",
"zxc"
],
/*允许的字符串*/
arrRegex : ['[0-9]', '[a-z]', '[A-Z]', '[!@#$%^&*()_-]' ],
/**
* 验证密码
* @param userName
用户名
* @param pwd
密码
* @param confirmPwd
确认密码
* @returns {boolean}
*/
verify : function(userName, pwd, confirmPwd){
userName = trim(userName);
pwd
= trim(pwd);
if(!userName || userName.length == 0){
alert('请先输入用户名');
return false;
}
if(!pwd || pwd.length == 0){
alert('请输入密码');
return false;
}
if (pwd.length < this.minLength) {
alert('密码长度至少需要' + this.minLength + '位');
return false;
}
if (pwd.length > this.maxLength) {
alert('密码长度超过'+ this.maxLength +'位');
return false;
}
/*判断输入密码与确认密码是否一致*/
if(confirmPwd && confirmPwd.length > 0){
if(pwd != confirmPwd){
alert('输入密码与确认密码不一致');
return false;
}
}
/*判断密码中是否存在用户名*/
if (pwd.indexOf(userName) >= 0) {
alert('密码中不能出现用户名为' + userName);
return false;
}
if (!eval('/' + this.arrRegex[0] + '/').test(pwd)) {
alert('密码没有包含数字');
return false;
}
if (!eval('/' + this.arrRegex[1] + '/').test(pwd)) {
alert('密码没有包含小写字母');
return false;
}
if (!eval('/' + this.arrRegex[2] + '/').test(pwd)) {
alert('密码没有包含大写字母');
return false;
}
if (!eval('/' + this.arrRegex[3] + '/').test(pwd)) {
alert('密码没有包含!@#$%&*_等至少一个特殊字符');
return false;
}
/*判断是否存在过滤性字符串*/
if(this.filter.length > 0){
for(var i = 0, length = this.filter.length; i < length; i++){
var value = this.filter[i];
if(pwd.indexOf(value) < 0){
continue;
}
alert("密码中不允许含有"+ value);
return false;
}
}
/*判断是否存在重复字符串*/
if(this.isRepeate(pwd)){
alert('密码中不能出现重复字符');
return false;
}
/*判断是否存在连续性字符串*/
if(this.isSeries(pwd)){
alert('密码中不能存在'+ this.seriesCount +'个以上的连续字符');
return false;
}
return true;
},
/**
* 是否存在重复字符串
* @param pwd
密码
* @returns {boolean}
*/
isRepeate : function(pwd){
if(pwd && pwd.length > 0){
for(var i = 0, length = pwd.length; i < length; i++){
var currentChar = pwd.charAt(i);
var prevChar
= i == 0 ? "" : pwd.charAt(i - 1);
if(currentChar == prevChar){
return true;
}
}
}
return false;
},
/**
* 是否存在连续性字符串
* @param pwd
密码
* @returns {boolean}
*/
isSeries : function(pwd){
if(pwd && pwd.length > 0) {
/*自身算起*/
var ascSeriesCount = 1;
var descSeriesCount= 1;
/*存在顺序型的连续性的字符串*/
for (var i = 0, length = pwd.length; i < length; i++) {
var currentCharCode = pwd.charCodeAt(i);
var prevCharCode
= i == 0 ? "" : pwd.charCodeAt(i - 1);
if(currentCharCode == prevCharCode + 1){
ascSeriesCount++;
if(ascSeriesCount == this.seriesCount){
return true;
}
} else{
ascSeriesCount = 1;
}
}
/*存在逆序性的连续性的字符串*/
for (var i = pwd.length - 1; i >= 0; i--) {
var currentCharCode = pwd.charCodeAt(i);
var prevCharCode
= (i - 1) >= 0 ? pwd.charCodeAt(i - 1) : "";
if(currentCharCode + 1 == prevCharCode){
descSeriesCount++;
if(descSeriesCount == this.seriesCount){
return true;
}
} else{
descSeriesCount = 1;
}
}
}
return false;
},
/**
* 初始化方法
* @param userNameId
用户id
* @param pwdId
*/
init : function(userNameId, pwdId){
$("#"+ pwdId).on("blur", function(){
var userName = $("#"+ userNameId).val();
var pwd = this.value;
if(userName.length == 0){
$("#"+ userNameId).focus();
alert("请输入用户名");
return false;
}
/*若验证正确,进行加密处理*/
if(this.verify(userName, pwd)){
pwd = md5(pwd);
$("#"+ pwdId).val(pwd);
}
});
}
}
})(window, undefined);
(function(window, verifyPwd){
window.verifyPwd = {
/*最小长度*/
minLength
: 6
/*最大长度*/
maxLength
: 18,
/*字符重复次数*/
repeatCount : 0,
/*连续字符*/
seriesCount : 3,
/*特定过滤字符串*/
filter
: [
"qaz",
"wsx",
"edc",
"qwe",
"asd",
"zxc"
],
/*允许的字符串*/
arrRegex : ['[0-9]', '[a-z]', '[A-Z]', '[!@#$%^&*()_-]' ],
/**
* 验证密码
* @param userName
用户名
* @param pwd
密码
* @param confirmPwd
确认密码
* @returns {boolean}
*/
verify : function(userName, pwd, confirmPwd){
userName = trim(userName);
pwd
= trim(pwd);
if(!userName || userName.length == 0){
alert('请先输入用户名');
return false;
}
if(!pwd || pwd.length == 0){
alert('请输入密码');
return false;
}
if (pwd.length < this.minLength) {
alert('密码长度至少需要' + this.minLength + '位');
return false;
}
if (pwd.length > this.maxLength) {
alert('密码长度超过'+ this.maxLength +'位');
return false;
}
/*判断输入密码与确认密码是否一致*/
if(confirmPwd && confirmPwd.length > 0){
if(pwd != confirmPwd){
alert('输入密码与确认密码不一致');
return false;
}
}
/*判断密码中是否存在用户名*/
if (pwd.indexOf(userName) >= 0) {
alert('密码中不能出现用户名为' + userName);
return false;
}
if (!eval('/' + this.arrRegex[0] + '/').test(pwd)) {
alert('密码没有包含数字');
return false;
}
if (!eval('/' + this.arrRegex[1] + '/').test(pwd)) {
alert('密码没有包含小写字母');
return false;
}
if (!eval('/' + this.arrRegex[2] + '/').test(pwd)) {
alert('密码没有包含大写字母');
return false;
}
if (!eval('/' + this.arrRegex[3] + '/').test(pwd)) {
alert('密码没有包含!@#$%&*_等至少一个特殊字符');
return false;
}
/*判断是否存在过滤性字符串*/
if(this.filter.length > 0){
for(var i = 0, length = this.filter.length; i < length; i++){
var value = this.filter[i];
if(pwd.indexOf(value) < 0){
continue;
}
alert("密码中不允许含有"+ value);
return false;
}
}
/*判断是否存在重复字符串*/
if(this.isRepeate(pwd)){
alert('密码中不能出现重复字符');
return false;
}
/*判断是否存在连续性字符串*/
if(this.isSeries(pwd)){
alert('密码中不能存在'+ this.seriesCount +'个以上的连续字符');
return false;
}
return true;
},
/**
* 是否存在重复字符串
* @param pwd
密码
* @returns {boolean}
*/
isRepeate : function(pwd){
if(pwd && pwd.length > 0){
for(var i = 0, length = pwd.length; i < length; i++){
var currentChar = pwd.charAt(i);
var prevChar
= i == 0 ? "" : pwd.charAt(i - 1);
if(currentChar == prevChar){
return true;
}
}
}
return false;
},
/**
* 是否存在连续性字符串
* @param pwd
密码
* @returns {boolean}
*/
isSeries : function(pwd){
if(pwd && pwd.length > 0) {
/*自身算起*/
var ascSeriesCount = 1;
var descSeriesCount= 1;
/*存在顺序型的连续性的字符串*/
for (var i = 0, length = pwd.length; i < length; i++) {
var currentCharCode = pwd.charCodeAt(i);
var prevCharCode
= i == 0 ? "" : pwd.charCodeAt(i - 1);
if(currentCharCode == prevCharCode + 1){
ascSeriesCount++;
if(ascSeriesCount == this.seriesCount){
return true;
}
} else{
ascSeriesCount = 1;
}
}
/*存在逆序性的连续性的字符串*/
for (var i = pwd.length - 1; i >= 0; i--) {
var currentCharCode = pwd.charCodeAt(i);
var prevCharCode
= (i - 1) >= 0 ? pwd.charCodeAt(i - 1) : "";
if(currentCharCode + 1 == prevCharCode){
descSeriesCount++;
if(descSeriesCount == this.seriesCount){
return true;
}
} else{
descSeriesCount = 1;
}
}
}
return false;
},
/**
* 初始化方法
* @param userNameId
用户id
* @param pwdId
*/
init : function(userNameId, pwdId){
$("#"+ pwdId).on("blur", function(){
var userName = $("#"+ userNameId).val();
var pwd = this.value;
if(userName.length == 0){
$("#"+ userNameId).focus();
alert("请输入用户名");
return false;
}
/*若验证正确,进行加密处理*/
if(this.verify(userName, pwd)){
pwd = md5(pwd);
$("#"+ pwdId).val(pwd);
}
});
}
}
})(window, undefined);以上就是本文的全部内容,希望对大家的学习有所帮助。
相关文章:
- jsvue中echarts图表大小适应窗口大小且不需要刷新案例js大全
- js深入理解 ES6中的 Reflect用法js大全
- JavaScriptvuejs element table 表格添加行,修改,单独删除行,批量删除行操作
- js解决echarts图表使用v-show控制图表显示不全的问题js大全
- JavaScriptecharts.js 动态生成多个图表 使用vue封装组件操作
- jsvue-router为激活的路由设置样式操作js大全
- js完美解决vue 中多个echarts图表自适应的问题js大全
- js解决Vue @submit 提交后不刷新页面问题js大全
- jsJS中作用域以及变量范围分析js大全
- jsvue cli4.0项目引入typescript的方法js大全