我有一个匹配网址的正则表达式:
(?:(?:http|ftp):\/\/)?[^\s]+\.[a-z]{2,}[^\s]*
现在我想允许特定的网址及其变体。
与www.example.com
,http://example.com/slash/slah?hello=world
一样。
在其他方面,我希望我的表达不符合这些情况。我一直在展望未来并向后看,但不能真正把它们放在适当位置。
我想过可能会创建一个正则表达式来匹配异常,并将它们替换为___match
,然后使用原始正则表达式,只有匹配它才能以___
开头。
有什么建议吗?
答案 0 :(得分:0)
最好分两步完成,例如:
if ($url =~ /(?:(?:http|ftp):\/\/)?[^\s]+\.[a-z]{2,}[^\s]*/ &&
$url !~ /www.example.com|http:\/\/example.com\/slash\/slah?hello=world/)
{
...
}
(不确定您使用的是哪种语言,这是perl代码)