10

パスワードチェックをしています。これらの関数の 1 つは、入力されたパスワードが連続して繰り返されているかどうかを調べることです。方法がわからないので、コードはまだありません。

この 1 つのRegEx は、連続していない 2 つ以上の同じ文字に一致することがわかりましたが、コンマの繰り返しにしか一致しません。

シナリオは次のとおりです。

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ループで文字列を繰り返し、次と比較して両方が同じ場合は1つ増やします(カウント用に1つの変数を宣言します).最後に、カウント値が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 に答える