【问题标题】:Need RegExpr matching group of 8 containing, 2+ uppercase, 2+ lowercase and 1+ number需要 RegExpr 匹配组 8 包含,2+ 大写,2+ 小写和 1+ 数字
【发布时间】:2012-06-01 23:15:09
【问题描述】:

我正在尝试使用符合以下情况的正则表达式创建垃圾邮件过滤器。

  • 有一组正好 8 个字母数字字符要匹配。
  • 必须包含2个或更多大写字母;
  • 并且必须包含 2 个或更多小写字母;
  • 并且它必须包含 1 个或多个数字。

到目前为止,我能想到的只有这个:

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

我的代码确实匹配 8 个混合大小写组,但不强制大写或小写或指定每种类型必须出现多少次。因此,我将它与相关消息中始终存在的其他必备要素结合在一起。

这是我试图检测的模式示例:

WbNDSk9e

这是垃圾邮件 URL 的一部分。我见过的其他组遵循相同的模式,即每个 UC 和 LC 字母至少 2 个,以及 1 个或多个数字,并且总是正好有 8 个字符。我还没有看到其他字符或变体。

据我所知,我唯一能使用的开关是使用 (?i) 打开区分大小写。我在一些回复中看到的其他一些开关在我使用的程序中不起作用。我对单行 RegExpr 规则的要求太多了吗?

我目前使用 RegEx Match 来测试我的规则,而我的反垃圾邮件程序使用相同的引擎。

【问题讨论】:

    标签: filter spam


    【解决方案1】:
    ^(?=.*?[A-Z].*?[A-Z])(?=.*?[a-z].*?[a-z])(?=.*?\d).{8}$
    

    分解:

    (?=.*?[A-Z].*?[A-Z]) 强制使用至少 2 个大写字母。

    (?=.*?[a-z].*?[a-z]) 强制使用至少 2 个小写字母。

    (?=.*?\d) 强制至少 1 个数字。

    ^ ... $ 插入符号和美元强制它匹配整个字符串。

    您不需要 (?i) 标志,因为它会使其不区分大小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2012-02-11
      • 2019-08-08
      • 1970-01-01
      相关资源
      最近更新 更多