2

パターン属性を使用したパスワード フィールドが必要なプロジェクトに取り組んでいます。実際には多くの正規表現を行っておらず、誰かが助けてくれるかどうか疑問に思っていました.

フィールドの要件は次のとおりです。

  • 「パスワード」という単語を含めることはできません
  • 長さは 8 ~ 12 である必要があります
  • 大文字が 1 つ必要です
  • 小文字が 1 つ必要です
  • 1 桁である必要があります

さて、これまでのところ、私は次のものを持っています:

[^(password)].(?=.*[0-9])?=.*[a-zA-Z]).{8,12}

これはうまくいきません。一致するパスワード文字列を除いて、他のすべてが機能するように取得できます。

前もってありがとう、アンディ

編集:現在使用している方法(以下のコメントにネストされています)は次のとおりです。 ^(?!.*(P|p)(A|a)(S|s)(S|s)(W|w)(O|o)(R|r)(D|d)).(?=.*\d)(?=.*[a-zA-Z]).{8,12}$

助けてくれてありがとう

4

4 に答える 4

2

:must contain" 基準には、一連の固定された先読みを使用します。

^(?!.*(?i)password)(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,12}$

「大文字と小文字を区別しない」スイッチ(?i)を「パスワード」要件に追加したので、文字の大文字と小文字に関係なく単語を拒否します。

于 2013-10-25T09:48:21.297 に答える
1

この正規表現は、次のようにする必要があります。

^(?!.*password)(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{8,12}$

一致します:

^               // from the beginning of the input 
(?!.*password)  // negative lookbehind whether the text contains password
(?=.*\d+)       // positive lookahead for at least one digit
(?=.*[A-Z]+)    // positive lookahead for at least one uppercase letter
(?=.*[a-z]+)    // positive lookahead for at least one lowercase letter
.{8,12}         // length of the input is between 8 and 12 characters
$

phpliveregexへのリンク

于 2013-10-25T09:49:17.297 に答える
0

これを試して:

^(?!.*password)(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,12}$

説明

^                         Start anchor
(?=.*[A-Z])               Ensure string has one uppercase letter
(?=.*[0-9])               Ensure string has one digits.
(?=.*[a-z])               Ensure string has one lowercase letter
{8,12}                    Ensure string is of length 8 - 12.
(?!.*password)            Not of word password
$                         End anchor.
于 2013-10-25T09:45:59.263 に答える