2012-05-26 49 views
2

我正在尝试使用正则表达式来创建垃圾邮件筛选器,该筛选器符合以下情况。需要RegExpr匹配组8,包含2+,大写字母2+,小写字母和1+数字

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

到目前为止,我已经能够拿出的是:

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

我的代码不相匹配的8大小写混合的群体,但不会强制大写或小写字母或规定如何很多时候每种类型都必须发生。所以,我将它与其他必备邮件相结合,这些邮件总是存在于相关邮件中。

这里是我试图探测模式的一个样本:

WbNDSk9e 

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

据我所知,我能够使用的唯一一个开关是用(?i)打开Case Sensitivity。我在某些回复中看到的其他一些交换机不适用于我使用的程序。我是从单行RegExpr规则问得太多吗?

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

回答

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

分拆下来:

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

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

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

^ ... $插入符号和美元的力量,它匹配整个字符串。

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

相关问题