最近有这么一个需求,用户设置密码(6位纯数字)的时候,不允许设置000000、111111、123456等这些简单的密码
方法一:
写个数组,判断用户输入的在不在这个数组内。大概算了下,6个相同的数字:000000到999999共10个;6个连续的数字:012345到456789,987654到543210共10个;总共20个。
方法二:
通过观察发现,上列的20个都构成等差数列,那么如何用JavaScript验证等差数列,使用等差数列的一种判定方法:
function check_pwd(pwd){
/*
* ...省略验证pwd是否6位纯数字
*/
var eq_seq = true;
for(var i=1;i<pwd.length-1;i++){
if((2*pwd.charAt(i))!=(Number(pwd.charAt(i-1))+Number(pwd.charAt(i+1)))){
//注意,这里使用了Number()函数防止1+2=12
//只要有一个不满足2a(n)=a(n-1)+a(n+1),则不是等差数列
eq_seq = false;
}
}
return eq_seq;
}
这里,后端除了验证了是否是等差数列,还验证了生日、手机号等(视具体需求改变),就不做赘述了。
要是有哪里写的不对或需改进,望各位大佬不吝赐教,感谢