我正在检查密码。这些功能之一是查找输入的密码是否连续重复。我还没有代码,因为我不知道该怎么做。
我发现这个正则表达式匹配两个或多个相同字符不连续,但它只匹配重复的逗号。
以下是场景:
5236aaa121 - 重复模式,因为a
连续重复 3 次
2312aa32aa - 没有重复的字符
111111asd - 重复模式,因为1
连续重复多次
我正在检查密码。这些功能之一是查找输入的密码是否连续重复。我还没有代码,因为我不知道该怎么做。
我发现这个正则表达式匹配两个或多个相同字符不连续,但它只匹配重复的逗号。
以下是场景:
5236aaa121 - 重复模式,因为a
连续重复 3 次
2312aa32aa - 没有重复的字符
111111asd - 重复模式,因为1
连续重复多次
下面的那一个呢?
(.)\1{2,}
试试这个正则表达式: (.)\1\1+
/(.)\1\1+/g
点匹配任何字符,然后我们连续查找多个字符。我在http://regexpal.com/上对其进行了测试,我相信它可以满足您的需求
你可以这样使用:
str.match(/(.)\1\1+/g).length
只需检查它是否为 0
看看这个在行动...... http://jsfiddle.net/yentc/2/
您只需通过 for 循环迭代字符串并比较一个到下一个,如果两者相同然后增加一个(声明一个变量用于计数).. 最后检查计数值是否大于 0,然后字符串重复模式...
你可以这样做:
var password = '5236aaa121';
for(var i = 0; i< password.length; i++) {
var numberOfRepeats = CheckForRepeat(i, password, password.charAt(i));
//do something
}
function CheckForRepeat(startIndex, originalString, charToCheck) {
var repeatCount = 1;
for(var i = startIndex+1; i< password.length; i++) {
if(originalString.charAt(i) == charToCheck) {
repeatCount++;
} else {
return repeatCount;
}
}
return repeatCount;
}