[英]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.