2017-01-05 32 views
0

有这种http://123.456.789.1:4200最终会http://example.com:4200我需要使用JavaScript只是http://123.456.789.1/http://example.com如何正则表达式的网址,但排除端口?

我目前使用这个/(.*[a-zA-Z0-9])/i得到,但它只是选择整个IP地址包括端口号。

如何才能选择只是IP地址或域名?

+0

IPv6怎么样?遇到这些的任何机会? – Lloyd

回答

1

试试这个正则表达式。 /(http|https):\/\/.+?(?=:)/i

它应该匹配httphttps uri方案。下面的正则表达式

1

用途:

https?:\/\/[^:\/]+ 

检查此链接了解详情:https://regex101.com/r/aods6f/1

+1

请[仅限链接回答](http://meta.stackoverflow.com/tags/link-only-answers/info)。答案是“几乎不超过链接到外部网站”[可能会被删除](http://stackoverflow.com/help/deleted-answers) – Quentin

0

为了配合主机可以使用:

result = urlstring.match(/^[a-z][a-z0-9+.-]*:\/\/([a-z0-9._~%!$&'()*+,;=-][email protected])?([a-z0-9._~%-]+|\[[a-z0-9._~%!$&'()*+,;=:-]+\])/ig); 

Regex 101

-1

你可以这样做这种方式(没有正则表达式),假设端口我s总是在第二个冒号:

var url = "http://example.com:4200".split(":"); 
url[0] + url[1] // That will be "http//example.com" 
+0

虽然有用,但OP确实要求使用正则表达式。 –