2012-10-25 41 views
2

我正在试图制作一个正则表达式,它与url中的主机名匹配。 我希望它打去以下主机名: - www.site.nl - site.nl主机名上的preg_match

我想它返回site.nl

我这有以下的正则表达式的工作: ( (?< = www。))site。(?: nl | be | eu)

但是,当我在something.site.nl上使用这个正则表达式时,它也返回site.nl.这不是我想要的。 我只想在site.nl之前什么也没有,或者有什么www。在它之前。

我已经尝试了很多不同的表达式,但无法弄清楚我该如何做到这一点。

我希望我的问题很清楚,你们可以帮我解决这个问题。

回答

2
^(?:www\.)?(site\.(?:nl|be|eu))$ 

应该工作。

(不要忘记点res中的特殊含义......)

+0

感谢您的快速反应。 但是,这仍然不是我想要完成的。 随着你的正则表达式,我仍然在something.site.nl的site.nl上找到一个匹配。 我只想在site.nl上没有任何东西或www时匹配。在它之前。 –

+0

你是什么意思?什么不行?我没有用PHP测试过它,我现在手边没有,但是我在一个正则表达式检查器中测试了它,它接受site.nl,www.site.nl并拒绝foo.site.nl和类似的东西。 – PhiLho

+0

没关系,知道它与你的正则表达式一起工作。谢谢! –

0

请使用:

/^(www\.)?(site\.(nl|be|eu))$/