Php 正在尝试使用reg-ex获取基本url

Php 正在尝试使用reg-ex获取基本url,php,regex,pattern-matching,Php,Regex,Pattern Matching,我需要匹配“基本”url,我的意思是: Not match --> http://google.com Not match --> http://www.google.com Not match --> www.google.com Match! --> google.com 我试着用一种否定的方法来确认没有http://或www,但它似乎不能正常工作。这必须只使用一个正则表达式吗? 您可以拥有第一个与找到的所有URL匹配的正则表达式。诸如此类: \b.+?\.\w{2

我需要匹配“基本”url,我的意思是:

Not match --> http://google.com
Not match --> http://www.google.com
Not match --> www.google.com
Match! --> google.com

我试着用一种否定的方法来确认没有http://或www,但它似乎不能正常工作。

这必须只使用一个正则表达式吗?

您可以拥有第一个与找到的所有URL匹配的正则表达式。诸如此类:

\b.+?\.\w{2,4}\b
然后筛选所有匹配项并保留不匹配项,如下所示:

^(http://|www)
尽管说实话,我不会使用正则表达式,除非这是绝对必要的

注意:
您总是可以找到更好的正则表达式来匹配URL。这里的问题是,它们可能不是以
http://
www
开头,因此我们不能对regex进行太多限制。准备好进行其他完全不是URL的匹配,例如:


昨天。但是
中的我昨天在那里。但是没有人看到我

它需要在一个正则表达式中吗?你试过什么正则表达式?你可能想看看。针对这个问题的正则表达式解决方案可能会变得非常混乱。
google.com
作为一个url意味着与
http://google.com
。“基本域”可能比完全错误的“基本url”更好。我同意,我已经想到它们不是从http://或www开始的,我想我会想出一些办法,但你是对的。由于它是一个简单的“输入URL字段”,我想每个URL都必须是reg ex,而不是手动查看。谢谢如果这只是url的文本字段,您可以进行一些其他验证(查看是否包含空格等),并将
\b
替换为
^
$
。您可以阅读URL中接受哪些字符的指南。