私は正規表現を練習しており、自分自身をテストするために、単純なパスワード検証式を作成しようとしていました。基本的には、それはそれは単純化のために(シンボルを持つことが必要複数のregex条件文をgiganic "または"文よりも検証する良い方法はありますか?
1)... [0-9A-Za-z]
を受け入れるだろうが、私はそれが大文字
を持つために必要な
2))[#&@!&*%$]
を使用しました私の考えでは、これを行う最善の方法は肯定的な先読みのステートメントであった。唯一の問題は、シンボルの前と後の検証でした。最初に大文字を先読みしていた場合、大文字が記号の前に来るかどうか、終りの場合は大文字であるかどうかだけを検証します。私がこれに対抗できる唯一の方法は、全体をコピーして大規模なORステートメントを作成することでしたが、先頭に先読みがあり、末尾に先読みがあります。私は(だけでなく、できれば皆さんに)私には意味をなさないの部分にそれを打破しようとするでしょう
/^[0-9A-Za-z#&@!&*%$]*(?=[A-Z]+)[0-9A-Za-z#&@!&*%$]*(?=[#&@!&*%$])[#&@!&*%$][A-Za-z|#&@!&*%$]*|[0-9A-Za-z#&@!&*%$]*(?=[#&@!&*%$])[#&@!&*%$](?=[A-Z]+)[0-9A-Za-z#&@!&*%$]*$/
:これは私が思いついた怪物です。それは私が首都があることを保証すること、そして、最初の肯定先読みが来る
- の
- 最初の部分は初めは、
[0-9A-Za-z#&@!&*%$]*
することができ[AZ] - 次に、
[#&@!&*%$]
のシンボルの1つが存在することを確認して、2番目の先読みが行われます。 - 次に、それは、これらの必要なシンボルのいずれかが第1の部分が第2の部分は非常に最初のようなものです
[A-Za-z|#&@!&*%$]*
- 最初の部分は初めは、
- OR書の第二部 の別の余裕をもって終わる
- 次に来ることができます。まあ、ほぼ完全なコピーと貼り付け。私は
|
ORシンボルを置いていますが、(?=[A-Z]+)
ルックアヘッドの代わりにのシンボルをの前に置いてチェックします。
すべてでは、(ほとんどの場合、)機能するものに多大な努力を払っています。私はいくつかの広範なグーグルを行ったが、何も本当に私の質問に答えるように見えなかった。私がやりたいことについてもっと簡単に行く方法はありますか?あなたは、文字列の先頭に先読みを固定(一度だけそれらを実行するために)、どこでもライン上の検索を可能にするために先読みで必要なサブパターンの前.*
か.*?
を追加(.
は通常ないことに注意する必要がある
これはかなりの表現です!あなたの環境が許せば、私は '/ [A-Z] /'と '/ [#&@!&*%$] /'という複数の式に分けて、 – cxw
私はこれがまったく問題ないと思う。したがって、 '[0-9A-Za-z#&@!&*%$] '文字の0以上の文字列にマッチする必要があります。大文字と' [#& !&*%$] 'どこにでも設定できますか? [このデモ](https://regex101.com/r/Gswowq/1)を参照してください。 –