2

次の状況に一致する正規表現を使用してスパムフィルターを作成しようとしています。

  • 一致する正確に8文字の英数字のグループがあります。
  • 2つ以上の大文字が含まれている必要があります。
  • また、2つ以上の小文字が含まれている必要があります。
  • また、1つ以上の数字が含まれている必要があります。

これまでのところ、私が思いついたのはこれだけです。

(?i)[A-Za-z0-9]{8}

私のコードは8の混合大文字小文字グループに一致しますが、大文字または小文字を強制したり、各タイプが発生する必要がある回数を指定したりしません。それで、私はそれを問題のメッセージに常に存在する他の必需品と組み合わせます。

これが私が検出しようとしているパターンのサンプルです:

WbNDSk9e

これはスパムURLの一部です。私が見た他のグループは、少なくとも2つの各UCおよびLC文字と1つ以上の数字の同じパターンに従い、常に正確に8文字です。他のキャラクターやバリエーションはまだ見ていません。

私の知る限り、使用できる唯一のスイッチは、大文字と小文字の区別を(?i)でオンにすることです。一部の返信で見た他のスイッチの一部は、使用しているプログラムでは機能しません。1行のRegExprルールから質問しすぎていませんか?

現在、RegEx Matchを使用してルールをテストしていますが、スパム対策プログラムは同じエンジンを使用しています。

4

1 に答える 1

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

内訳:

(?=.*?[A-Z].*?[A-Z])少なくとも2つの大文字を強制します。

(?=.*?[a-z].*?[a-z])少なくとも2つの小文字を強制します。

(?=.*?\d)少なくとも1桁を強制します。

^ ... $弦全体にマッチするカレットとドルの力。

(?i)大文字と小文字を区別しないため、フラグは必要ありません。

于 2012-05-26T22:23:02.620 に答える