1

私の認証 Web サイトでは、正規表現を使用してブラックリストのパスワードを制御しています。(ブラックリストに登録されたパスワードの例: 12345678、123456789、野球、フットボール)

単語 (ブラック リストに登録されたパスワード) を除外する新しい正規表現ルール (境界を使用) を追加したいと思います。私は StackOverflow に関するいくつかの同様の質問を読み、次のようなもので宣言しようとしました:

^(?!\b12345678\b|\b123456789\b|\bbaseball\b|\bfootball\b|\bsuperman\b).*$

この正規表現は上記の単語と一致しません。正しいです。たとえば、文字、数字、または特殊文字 (「baseball」の前後) を含む「Baseball」は一致する必要があります。

しかし、「baseball! 」は「 !baseball 」とは逆に一致しません。やり方を教えてください。

4

1 に答える 1

0

しかし、「baseball! 」は「 !baseball 」とは逆に一致しません…</p>

baseball!パターンが最初に許可されていないため、一致しませんbaseball^その後に の否定先読みが続きbaseballます)。
!baseball対照的に、 は最初に配置されているため一致!し、否定先読みはそこでのみ行われ、後方では行われません。
を別の場所に配置することも考えられますが、それでは.*何も起こりません。先読み
にアンカーを含めるだけです。^ $

(?!^(12345678|123456789|baseball|football|superman)$)^.*$

(実際、最初の を削除することもできます^)。

于 2016-05-24T11:06:16.917 に答える