29

英数字のみを許可するこの正規表現があります。

文字列に少なくとも3つのアルファベット文字が含まれていることを確認するにはどうすればよいですか。

私の現在の正規表現、

if(!/^[a-zA-Z0-9]+$/.test(val))

文字列を強制して、少なくとも3つの連続したアルファベット文字が存在することを確認したいと思います。

111 // false
aaa1 // true
11a // false
bbc // true
1a1aa // false
4

4 に答える 4

67

+「1回以上」を意味します。

{3}「3回」を意味します。

{3,}「3回以上」を意味します。

+と書くこともできます{1,}

*と書くこともできます{0,}

于 2013-03-11T14:28:31.573 に答える
41

どこにでも3つの英字を強制するには、

/(.*[a-z]){3}/i

十分なはずです。

編集。ああ、あなたは質問を編集して、3つのアルファベット文字が連続している必要があると言いました。また、すべての文字が「受け入れられた」文字の1つと一致するように強制することもできます。次に、先読みが最もクリーンな解決策になる可能性があります。

/^(?.*[a-z]{3})[a-z0-9]+$/i

/iを記述しなくても済むように、大文字と小文字を区別しない修飾子を使用していることに注意してくださいa-zA-Z

別。ルックアラウンドアサーションの詳細については、こちらをご覧ください。しかし、この段階では少し頭がおかしいかもしれません。これは、あなたがすでに知っていることに関してあなたが分解するのがより簡単であると思うかもしれない代替案です:

/^([a-z0-9]*[a-z]){3}[a-z0-9]*$/i
于 2013-03-11T14:30:25.920 に答える
9

これで作業が完了します。

^([0-9]*[a-zA-Z]){3,}[0-9]*$

少なくとも3つの「ゼロ以上の数値+1つのアルファ」シーケンス+ゼロ以上の数値をチェックします。

于 2013-03-11T14:33:14.843 に答える
0

0桁以上、連続3文字、その他の桁数を一致させたいですか?

/\d*(?:[a-zA-Z]){3,}\d*/

于 2013-03-11T14:34:31.523 に答える