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

我尝试了此处提供的答案。正则表达式在数据包中搜索为域名发出的 DNS 请求,需要 .com .net。组织 TDL。任何其他域名都应该匹配,任何以 结尾的反向 IP 查找请求.in-addr.arpa都不应该匹配。名称以 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
4

2 回答 2

3

您可以改用后视断言:

^[a-z0-9-\.]+$(?<!\.in-addr\.arpa)
于 2013-05-16T19:26:52.463 回答
0

尝试这个:

^[a-z0-9-]++(?>\.(?!in-addr\.arpa$)[a-z0-9-]++)++$
于 2013-05-16T19:36:08.733 回答