开发者

What's a good regular expression to capture the root domain of a given url?

Using javascript, how can I capture the string example.com from the current domain http://exam开发者_运维百科ple.com/bar?param=value or https://www.example.com?

My first attempt doesn't work correctly:

https?://w?w?w?[.]?[^?/]


You don't need regex for this! Let the browser parse it for you:

var a = document.createElement('a');
a.href = 'http://foo.com/bar?param=value';
a.hostname; // "foo.com"

Voila!


If doing this in JavaScript, you don't even need a regex. You can use the location object like so:

var host = window.location.host;

This link has more information about how to get other parts of the URL: http://www.comptechdoc.org/independent/web/cgi/javamanual/javalocation.html.


For full cross-browser compatibility simply go with the document object, not window:

var theHost = document.location.host;


If you're really sold on using regular expressions rather than built-in tools in the language (e.g. PHP's parse_url function) then something like:

(?:(\w+)://)([^/]+)(/\w+)?

will do it in a very rough way, with the hostname in subgroup 2. This is just a quick-and-dirty hack though (and won't work in all cases), and I would advise using the language's built-in tools.

If it's Javascript and the current URL, look at window.location.host or window.location.hostname.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜