1

の小文字と大文字A-Zdigitsおよびすべての文字列 @#$_の長さ制限のある記号に一致する正規表現を作成しようとしています。4 to 16

私の役に立たない正規表現:
/^([a-zA-Z])|(\d)|(@#\$_){4,16}$/

http://www.jslab.dk/tools.regex.phpのようなオンライン正規表現ジェネレーターをテストしましたが、良い結果は得られませんでした。

4

3 に答える 3

5

正規表現/^([a-zA-Z])|(\d)|(@#\$_){4,16}$/は、「@#\$_」の 1 文字または 1 桁または 4 ~ 16 文字に一致します。

代替案の周りのグループは役に立ちません。

1 つの解決策は、交代全体の周りにグループを作成することです。

/^([a-zA-Z]|\d|@#\$_){4,16}$/

しかし、より良い解決策は、すべてを 1 つの文字クラスに追加することです

/^[a-zA-Z@#$_\d]{4,16}$/

ここでRegexrを参照してください

がユニコードベースでない場合[a-zA-Z\d_]はと同じなので\w、さらに単純化することができます!\w

/^[\w@#$]{4,16}$/
于 2013-03-10T15:08:50.533 に答える
1

\w小文字と大文字、数字、および文字が含まれ_ます

正規表現パターン:^[\w@\#\$]{4,16}$

ここで説明されたデモ: http://regex101.com/r/rK1yH2

于 2013-03-10T15:07:00.820 に答える
0

必要な式は次のとおりです。

( ([a-zA-Z])|(\d)|(@#\$_) ){4,6}

あなたの問題は、最後の {2,6} が式全体ではなく、ブラケットの最後のグループにのみ影響することです。また、「^」は「not」を意味するため、「/ ^」と「$ /」が必須であることを確認してください。なぜそこにあるのかわかりません。

また、ここでグラフィカルに表示することもできます: http://www.debuggex.com/

于 2013-03-10T15:08:44.660 に答える