2012-05-26 85 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)標誌,因爲它會使其不區分大小寫。

相關問題