标签: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实现方法:
多平台实现密码强度(Javascript 、android、ios)
标签:javascript android ios 正则表达式 密码强度
原文地址:http://blog.csdn.net/fengqing520_2012/article/details/39026519