0

パスワードに少なくとも 1 桁の数字が含まれているかどうかを確認する正規表現を取得できません。これはどこでも回答されていますが、分割するとすべての回答が機能しなくなります。たとえば、この作業パスワードの検証では、次を削除した場合:

(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])

から

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}$

1桁の存在を確認するために、すべてが機能しなくなります

私は正規表現が初めてです。これは理にかなっているようですが、そうではありません。できれば光を見せてください。

4

1 に答える 1

0

全体が機能しなくなるという意味がよくわかりません。

(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])

上記のすべてが行うことは、次のことを義務付けていることです。

  1. 小文字は少なくとも 1 回出現する必要があります
  2. 大文字は少なくとも 1 回出現する必要があります
  3. いずれかが@#$%^&+=少なくとも 1 回出現する必要があります

したがって、それらを削除しても何かが壊れるという理由はありません。それらは本質的に独立したコンポーネントです。

a に数値が含まれているかどうかを確認する方法は無数にありますString。実際に確認する方法は、特定の要件によって異なります。提示された正規表現で使用される方法は、肯定的な先読みを通じてこれを行います。^(?=.*[0-9])

^ : で始まる
.* : 0 個以上の非改行文字に一致
[0-9]: 数字 [0,1,2,...,9] に一致する文字クラス
?= 正の先読み、この場合は、少なくとも 1 つの数値が存在する場合に一致することを示しています

それが役に立ったことを願っています。正規表現に関する Oracle のチュートリアルから始めることができます。それを理解した後は、Google を介してより高度なリソースを見つけることができると確信しています。

于 2013-07-25T11:54:22.260 に答える