の小文字と大文字A-Z
、digits
およびすべての文字列 @#$_
の長さ制限のある記号に一致する正規表現を作成しようとしています。4 to 16
私の役に立たない正規表現:
/^([a-zA-Z])|(\d)|(@#\$_){4,16}$/
http://www.jslab.dk/tools.regex.phpのようなオンライン正規表現ジェネレーターをテストしましたが、良い結果は得られませんでした。
の小文字と大文字A-Z
、digits
およびすべての文字列 @#$_
の長さ制限のある記号に一致する正規表現を作成しようとしています。4 to 16
私の役に立たない正規表現:
/^([a-zA-Z])|(\d)|(@#\$_){4,16}$/
http://www.jslab.dk/tools.regex.phpのようなオンライン正規表現ジェネレーターをテストしましたが、良い結果は得られませんでした。
正規表現/^([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}$/
必要な式は次のとおりです。
( ([a-zA-Z])|(\d)|(@#\$_) ){4,6}
あなたの問題は、最後の {2,6} が式全体ではなく、ブラケットの最後のグループにのみ影響することです。また、「^」は「not」を意味するため、「/ ^」と「$ /」が必須であることを確認してください。なぜそこにあるのかわかりません。
また、ここでグラフィカルに表示することもできます: http://www.debuggex.com/