我有一个URL,可以是以下任何格式:
http://example.com
https://example.com
http://example.com/foo
http://example.com/foo/bar
www.example.com
example.com
foo.example.com
www.foo.example.com
foo.bar.example.com
http://foo.bar.example.com/foo/bar
example.net/foo/bar
Run Code Online (Sandbox Code Playgroud)
基本上,我需要能够匹配任何普通的URL.我如何example.com 通过单个正则表达式提取(或.net,无论tld恰好是什么.我需要这个与任何TLD一起工作.)
我想要一个解决方案只验证域名不是完整的URL,以下示例是我正在寻找的:
domain.com -> true
domain.net -> true
domain.org -> true
domain.biz -> true
domain.co.uk -> true
sub.domain.com -> true
domain.com/folder -> false
domµ*$ain.com -> false
Run Code Online (Sandbox Code Playgroud)
谢谢
可能重复:
如何在PHP中验证域名?
在PHP中验证URL的更好方法
我如何检查,如果$variable是网站地址?
就像,为此它应该给true:
$varialbe = 'http://google.com';
Run Code Online (Sandbox Code Playgroud)
为此false:
$variable = 'this value can be anything, but we know its not a domain';
Run Code Online (Sandbox Code Playgroud) 我目前有这个,但它并不完美:
$testcases = array(
array("I love mywebsite.com", true),
array("mywebsite.com/ is what I like", true),
array("www.mywebsite.com is my website", true),
array("Check out www.mywebsite.com/", true),
array("... http://mywebsite.com ...", true),
array("... http://mywebsite.com/ ...", true),
array("... http://www.mywebsite.com ...", true),
array("... http://www.mywebsite.com/ ...", true),
array("I like commas and periods. Just like www.mywebsite.com, they do it too!", true),
array("thisismywebsite.com is a lot better", false),
array("The URL fake.mywebsite.com is unknown to their server", false),
array("Check out http://redirect.mywebsite.com/www.ultraspammer.com", false)
);
function contains_link($text) {
return preg_match("/(https?:\/\/(?:www\.)?|(?:www\.))mywebsite\.com/", $text) > 0;
} …Run Code Online (Sandbox Code Playgroud) php ×4
regex ×3
dns ×1
domain-name ×1
preg-match ×1
standards ×1
string ×1
subdomain ×1
validation ×1