110,571
社区成员
发帖
与我相关
我的任务
分享
if(str.length<2){return false;}
else
{
for(int i=1;i<str.length;i++)
{
if(abs(str[i]-str[i-1])==1) {return false;} //前后ascii码差值绝对值为1表示连续
}
}
然9:,@A。。。。。。误判。。。。。。。
^(?=\d+)(?!([\d])\1{5})[\d]{6}$
^(?=.*\d+)(?!.*?([\d])\1{5})[\d]{6}$
,它实现了以下内容:密码为6位纯数字,且不能连续重复;即去掉了000000~999999这10种情况。但我对这个正则表达式还是没怎么读懂,麻烦大家指点下,最好一步步解析下。菜鸟拜谢
(?=.*\d+)
?=应该是只匹配它后面的表达式,若匹配则正; .*是不是多余了
(?!.*?([\d])\1{5})
?!后面的?号是什么意思 \1是表示匹配两个连续的相同字符
[\d]{6}
这部分我只知道{6}是限制了长度
function checkRank(val){
if(val.length<6||/^[0-9]{1,8}$/.test(val))
{
showPwRank(0);
return 0;
}
var ls = 0;
if (val.match(/[a-z]/g)){ ls++; }
if(val.match(/[A-Z]/g)){ ls++; }
if (val.match(/[0-9]/g)){ ls++; }
if (val.match(/[^a-zA-Z0-9]/g)){ ls++; }
if (val.length < 8 && ls > 1){ ls = 1; }
if(ls>3) { ls=3; };
return ls;
}
string psw = "111111"; //密码
string srt = "0123456789_9876543210_abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ_zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA";
if (psw.Length != 6 || psw.Distinct().Count() == 1 || (!psw.Contains("_") && srt.Contains(psw)))
{
//不通过
}
else
{
//通过
}
var str = "171325";
if (Regex.IsMatch(str, @"^[0-9a-zA-Z]{6}$") && !Regex.IsMatch(str, @"(?<k1>[0-9a-zA-Z])\k<k1>+"))
{
Console.WriteLine("success");
}
还有个连续的你自己写循环判断吧
至于弱密码,一般用几个正则来判断比较方便(?<k1>[0-9a-zA-Z])\k<k1>+
如果匹配时代表有重复
你只是不允许6位全部相同,那就是不允许下面这个正则匹配成功
^(?<k1>[0-9a-zA-Z])\k<k1>{5}$
你要密码匹配密码的话,不知道你什么规则,如果仅仅数字字母的话那就是要匹配
^[0-9a-zA-Z]{6}$
所以上面两个正则可以搞定你的六位长度字符串,并且不允许六位全部相同,不允许连续这个要写循环代码了