多平台实现密码强度(Javascript 、android、ios)
密码强度是目前很常用的一种功能,密码强度的实现,在web端都很好实现,可以很轻松的使用Javascript方法实现,目前因为项目需要,要在手机app上也实现密码强度,并且同时要在Android和ios上都实现相同功能,密码复杂度,无外乎大写字母、小写字母、数字和特殊符号,且需要加上重复字符出现的次数等,一般常用的方法都是使用正则表达式。
查阅了很多资料,网上在app端实现密码强度的例子基本没有(手机QQ是调用的web页面,支付根本没有密码复杂度),且又要web端和app端的三种语言通用,没办法只有自己写了,将web端的javascript方法改写成,Android是java语言容易改写,ios用的是object-c语言改写费劲一点,三种语言的正则表达式写法都不一致,只能用不同方式实现要求。分享出来,让大家一起完善.
javascript实现方法:
//检查密码的重复度 function CheckPwdRepetition(pLen, str) { var res = ""; for (var i = 0; i < str.length ; i++) { var repeated = true; for (var j = 0; j < pLen && (j + i + pLen) < str.length; j++) { repeated = repeated && (str.charAt(j + i) == str.charAt(j + i + pLen)); } if (j < pLen) { repeated = false; } if (repeated) { i += pLen - 1; repeated = false; } else { res += str.charAt(i); } } return res; }; //检测密码强度 function CheckPwdStrength(password) { var flag = 0; var score = 0; //password < 4 if (password.length < 7) { flag = 3; return flag; } //小于9,且是纯数字 if (password.length < 9 && password.match(/^[0-9]*[1-9][0-9]*$/)) { flag = 4; return flag; } //密码长度加分 score += password.length * 4; score += (CheckPwdRepetition(1, password).length - password.length) * 1; score += (CheckPwdRepetition(2, password).length - password.length) * 1; score += (CheckPwdRepetition(3, password).length - password.length) * 1; score += (CheckPwdRepetition(4, password).length - password.length) * 1; //step1:密码有三个数字 if (password.match(/(.*[0-9].*[0-9].*[0-9])/)) { score += 5; } //step2:密码有两个特殊字符 if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) { score += 5; } //step3:密码有大写和小写字母 if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) { score += 0; } //step4:密码有数字和字母 if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) { score += 15; } //step5:密码有数字和特殊字符 if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)) { score += 15; } //step6:密码有字母和特殊字符 if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)) { score += 15; } //step7:密码只有数字或只有字母 if (password.match(/^\w+$/) || password.match(/^\d+$/)) { score -= 10; } //verifying 0 < score < 100 if (score < 0) { score = 0; } if (score > 100) { score = 100;} if (score < 36) { flag = 0; } else if (score < 70) { flag = 1; } else { flag = 2; } if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) && password.match(/([0-9])/)) { } else { flag = 5; return flag; } return flag; }
android实现方法:android实现方法:
ios实现方法:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。