我已经在PHP中编写了以下正则表达式以供在preg_replace()中使用。正则表达式等于条件,除了某些条件
/\b\S*(.com|.net|.us|.biz|.org|.info|.xxx|.mx|.ca|.fr|.in|.cn|.hk|.ng|.pr|.ph|.tv|.ru|.ly|.de|.my|.ir)\S*\b/i
这个正则表达式很有效地从字符串中删除所有URL(虽然我确信我可以写出更好的一个)。我需要能够从特定的域添加排除。因此,伪代码将是这样的:
IF string contains: .com or .net or. biz etc... and does not contain: foo.com THEN execute condition.
如何做到这一点任何想法?
这不是一个URL。您正在讨论如何匹配主机名,并尝试将其与您所听到的TLD列表进行匹配。这很少是一个好主意,因为TLD列表一直在增长,并且包含了很多您错过的(尽管尚未存在的.xxx)。 – bobince 2011-01-25 21:55:07
如果您将其放入regex.powertoy.org中,它可以很好地工作,但其他顶级域名可以工作。正如我所说,它不是最好的解决方案,但它确实适用于这种情况。 – systematical 2011-01-25 22:10:12