2013-05-16 85 views
1

試圖讓這個正則表達式工作。正則表達式 - 和和不匹配

[a-z0-9-\.]+(?!.in-addr.arpa*$) 

樣本 -

sdfgsed.co.in //shall match 
1.1.1.1.in-addr.arpa //shall not match 
fgsagf.co.ru //shall match 
agfasfdg21.cn //shall match 

編輯 -

(?i)([a-z0-9-\.]{3,}\.(?!us|com|net)[a-z]{2})+$(?<!\.in-addr\.arpa)\x00 

我想在這裏提供了答案。正則表達式在數據包中搜索域名爲.com .net的DNS請求。 org TDLs。任何其他域名應匹配,並且以.in-addr.arpa結尾的任何反向IP查找請求不應匹配。該名稱以十六進制值NULL結尾。名字可以在數據包中的任何地方。

搜索數據包有效載荷,例如 -

27.5.17.50.in-addr.arpa //reverse IP look up, shall not match 
abcd.com // .com TDL shall not match 
hacker.ru //shall match 
badguy.com.cn //shall match 

回答

3

你可以使用一個向後看斷言,而不是:

^[a-z0-9-\.]+$(?<!\.in-addr\.arpa) 
+0

我試圖與使用RegexBuddy PCRE 。我更新了我的問題。 –

0

試試這個:

^[a-z0-9-]++(?>\.(?!in-addr\.arpa$)[a-z0-9-]++)++$