第一篇博文。想写好久了,不知道写点什么,就写个最近开发的遇到的吧,有点弱。见谅哈~
输入六位数字作为密码,要求密码强度不能太弱,弱密码判断的规则是“不能包含四位连续递增或递减的数字,同一个数字不能连续输入四位”。
我的方式是js做判断,代码如下:
//判断是否是6位数字
function validate(str){
var reg = new RegExp("^[0-9]{6}$");
if(!reg.test(str)){
alert("请输入6个数字!");
return false;
}
}
//判断数组递增递减
function isContinuityArray(arrStr,flag) {
var isContinuityArray = false;
var array = arrStr.split('');
var arrayCount = array.length - 1;
for (var i = 0; i < arrayCount; i++) {
var currentArr=0;
var nestArr = Number(array[i + 1]);
if(flag == 1){
currentArr = Number(array[i]) + 1;
}else{
currentArr = Number(array[i]) - 1;
}
if(i+1==arrayCount){
currentArr= Number(array[i]);
nestArr= Number(array[i]);
}
if (currentArr != nestArr) {
isContinuityArray = true;
break;
} else {
isContinuityArray = false;
}
}
return isContinuityArray;
}
//测试方法
function test(info) {
if (!/^\d{6}$/.test(info)) return false; // 不是6位数字
var arry = [];
//要连续四位,这个地方如有更好处理方式,请留言
arry.push(info.substring(0,4));
arry.push(info.substring(1,5));
arry.push(info.substring(2,6));
var flag=0;
$.each(arry,function(n,s){
if (/^(\d)\1+$/.test(s)) {flag =1;return false;} // 全一样
var str = s.replace(/\d/g, function($0, pos) {
return parseInt($0)-pos;
});
if (/^(\d)\1+$/.test(str)) {flag =1;return false;} // 顺增
str = s.replace(/\d/g, function($0, pos) {
return parseInt($0)+pos;
});
if (/^(\d)\1+$/.test(str)) {flag =1;return false;} // 顺减
});
if(flag==1){
return false;
}else{
return true;}
}
//获取输入框数据调用测试方法
function checkInfo(){
var info = $('#aa').val();
alert(test(info));
}
页面代码:
<input type="text" id="aa"/>
<button class="ter_search mt2" type="button" onclick="checkInfo()">提交</button>
以上为简单的测试,已测试过,可以使用。
总结:主要是正则判断的使用,/^(\d)\1+$/ ,其中\1表示与之前数字一样。
*其中参考其他网址,由于没有保存网址,请见谅。本文仅做笔记使用。
如果有不合适的地方,请大家多多指正!*