1

悪意のあるソフトウェアで使用されるさまざまな Base64 マスクを検出する正規表現を探しています。

  • 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/
  • 0ABcDEFGHIJKLMNOPQRSTUVWXYZabCdefghijklmnopqrstuvwxyz123456789+/

しかし、私の単純な正規表現は、「ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ」のような繰り返し文字にも一致します。

 [a-zA-Z0-9+/]{64}

正規表現を使用して、繰り返さない 64 文字を一致させる方法はありますか?

4

1 に答える 1

0

検証しようとしている場合は、64 文字があり、次のような文字列内のどの位置でも重複する文字がないことを検出します。

良い文字列:0ABcDEFGHIJKLMNOPQRSTUVWXYZabCdefghijklmnopqrstuvwxyz123456789+/

が 2 回表示さ0ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefGhijklmnopqrstuvwxyz123456789+/れるため、文字列が正しくありませんG

次に、この正規表現を使用できます。

^(?=.{64}$)(?!.*?(.)(?=.*?\1))

ここに画像の説明を入力

入力文字列に 64 個の一意の文字が含まれている場合、正規表現は一致を返します。

  • ^文字列の先頭に一致
  • (?=.{64}$)文字列が 64 文字であることを確認してください
  • (?!内部式が真の場合に偽を返す負の先読みを強制します
  • .*?序文を任意の文字に移動
  • (.)1 人のキャラクターをキャプチャし、キャプチャ グループ 1 に配置します
  • (?=グループ 1 の現在の文字の後に同じ文字があるかどうかを確認するために、肯定的な先読みを開く
  • .*?次の文字が見つかるまで、任意の数の文字をスキップします
  • \1文字が重複していないことを確認するためのキャプチャ グループ 1 への逆参照
  • )クローズアップポジティブルックアヘッド
  • )否定的な先読みを閉じる
于 2013-06-10T03:37:33.273 に答える