1

我正在寻找可以检测恶意软件中使用的不同 Base64 掩码的正则表达式,例如

  • 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/
  • 0ABcDEFGHIJKLMNOPQRSTUVWXYZabCdefghijklmnopqrstuvwxyz123456789+/

但我的简单正则表达式也匹配重复字符,如“ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ”

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

有没有办法使用正则表达式匹配不重复的 64 个字符?

4

1 回答 1

0

如果您要验证您有 64 个字符并检测到它们都不是字符串中任何位置的重复字符,例如

好字符串:0ABcDEFGHIJKLMNOPQRSTUVWXYZabCdefghijklmnopqrstuvwxyz123456789+/

错误的字符串0ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefGhijklmnopqrstuvwxyz123456789+/,因为G出现了两次

然后你可以使用这个正则表达式:

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

在此处输入图像描述

如果输入字符串有 64 个唯一字符,则正则表达式将返回匹配项。

  • ^匹配字符串的开头
  • (?=.{64}$)向前看以确保字符串中有 64 个字符
  • (?!如果内部表达式为真,则强制否定前瞻,这将返回假
  • .*?将前言移到任何字符
  • (.)捕获单个字符并放入捕获组 1
  • (?=打开正向向前看,看第1组中当前字符后面的字符是否相同
  • .*?跳过任意数量的字符,直到找到下一个
  • \1反向引用捕获组 1 以确保该字符不是重复的
  • )关闭 积极 展望
  • )关闭负面展望
于 2013-06-10T03:37:33.273 回答