10

我正在检查密码。这些功能之一是查找输入的密码是否连续重复。我还没有代码,因为我不知道该怎么做。

我发现这个正则表达式匹配两个或多个相同字符不连续,但它只匹配重复的逗号。

以下是场景:

5236aaa121 - 重复模式,因为a连续重复 3 次

2312aa32aa - 没有重复的字符

111111asd - 重复模式,因为1连续重复多次

4

5 回答 5

17

使用反向引用:/(.)\1\1/

例子:

var hasTripple = /(.)\1\1/.test('xyzzzy');

JSFiddle 示例

于 2013-03-28T17:29:18.320 回答
6

下面的那一个呢?

(.)\1{2,}

于 2013-03-28T17:33:53.127 回答
3

试试这个正则表达式: (.)\1\1+

/(.)\1\1+/g

点匹配任何字符,然后我们连续查找多个字符。我在http://regexpal.com/上对其进行了测试,我相信它可以满足您的需求

你可以这样使用:

str.match(/(.)\1\1+/g).length

只需检查它是否为 0

看看这个在行动...... http://jsfiddle.net/yentc/2/

于 2013-03-28T17:30:52.947 回答
2

您只需通过 for 循环迭代字符串并比较一个到下一个,如果两者相同然后增加一个(声明一个变量用于计数).. 最后检查计数值是否大于 0,然后字符串重复模式...

于 2013-03-28T17:28:22.640 回答
1

你可以这样做:

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;
}
于 2013-03-28T17:29:46.517 回答