URL正则表达式,不包括特定域

时间:2010-12-17 14:20:57

标签: regex

我有一个匹配网址的正则表达式:

(?:(?:http|ftp):\/\/)?[^\s]+\.[a-z]{2,}[^\s]*

现在我想允许特定的网址及其变体。

www.example.comhttp://example.com/slash/slah?hello=world一样。

在其他方面,我希望我的表达不符合这些情况。我一直在展望未来并向后看,但不能真正把它们放在适当位置。

我想过可能会创建一个正则表达式来匹配异常,并将它们替换为___match,然后使用原始正则表达式,只有匹配它才能以___开头。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

最好分两步完成,例如:

if ($url =~ /(?:(?:http|ftp):\/\/)?[^\s]+\.[a-z]{2,}[^\s]*/ && 
    $url !~ /www.example.com|http:\/\/example.com\/slash\/slah?hello=world/)
{
   ...
}

(不确定您使用的是哪种语言,这是perl代码)