繁体   English   中英

我需要一个正则表达式来获取URL的国家/地区代码

[英]I need a regular expression to get the country code of an URL

我需要一个正则表达式来获取URL的扩展名,例如国家/地区代码...

例如,我有3个站点,分别针对以下三个国家/地区具有不同的域扩展名。

http://www.domain.com
domain.de/
domain.co.uk

我需要一个获取上述字符串中url扩展名的正则表达式。 返回“ com”,“ de”或“ uk”

请记住,域可能是带斜杠或不带斜杠的其他字符串。

因此,理想的正则表达式将能够从以下方面摆脱困境:

"domain.de" or "http://www.domain.de" or "www.domain.de/"

我最接近的是使用以下命令:

\w*$

但是a,这不能用斜杠结尾。

如果您只需要在添加的示例中使用正则表达式,那么它就非常简单:

\.([a-z]{2,3})\/?$

这将从您提供给我们的所有输入中提取国家:

http://www.domain.com
domain.de
http://www.domain.de
www.domain.de/

国家/地区代码在捕获组1中。

限于HTTP和HTTPS,您可以使用:

/^(https?:\/\/)?([^@\/]+@)?[a-z0-9.]+\.([a-z]{2,4})(:[0-9]+)?\/?$/
                                      ^^^^^^^^^^^^

您会在$ 3中找到TLD。

$ php -r '$t="example.ca"; preg_match("/^(https?:\/\/)?([^@\/]+@)?[a-z0-9.]+\.([a-z]{2,4})(:[0-9]+)?\/?$/", $t, $m); print $m[3]."\n";'
ca
$ php -r '$t="http://user:password@www.example.ca/"; preg_match("/^(https?:\/\/)?([^@\/]+@)?[a-z0-9.]+\.([a-z]{2,4})(:[0-9]+)?\/?$/", $t, $m); print $m[3]."\n";'
ca

使用您已经拥有的功能,我们可以轻松地对其进行调整以考虑斜杠

\w*[/]?$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM