我刚开始使用正则表达式,我遇到了问题。所以,如果有人可以帮助我,那将是非常好的。
问题是,如果我有一个如下所示的网址;
$url = http://www.blog.domain.com/page/category=?
并且只想要域,如何在javascript中使用正则表达式来获取它。
谢谢
答案 0 :(得分:1)
这也应该有效,但限制最多且更短:
var url = "http://www.blog.domain.com/page/category"
var result = url.replace(/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})(\/.+)$/i,"$4")
如果你想要" domain.com"而不仅仅是"域名",使用 $ 3 而不是 $ 4 。
逐步解释:
/([a-z0-9-]*)/i
/(([a-z0-9-]*)\.[a-z]{2,6})/i
/(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
/^https?:\/\/(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})/i
/^(https?:\/\/)?(.+\.)*(([a-z0-9-]*)\.[a-z]{2,6})(\/.+)$/i
答案 1 :(得分:0)
尝试以下代码
var url = "http://www.blog.domain.com/page/category=?";
var match = url .match(/(?:http?:\/\/)?(?:www\.)?(.*?)\//);
console.log(match[match.length-1]);
答案 2 :(得分:0)
请勿使用正则表达式:
使用hostname:
URLUtils.hostname属性是包含域的DOMString 网址。
var x = new URL("http://www.blog.domain.com/page/category=?").hostname;
console.log(x);
如vishwanath所指出的,URL面临与IE <10的兼容性问题,因此对于这些情况,将需要正则表达式。
使用它:
var str = "http://www.blog.domain.com/page/category=?";
var res = str.match(/[^.]*.(com|net|org|info|coop|int|co\.uk|org\.uk|ac\.uk|uk)/g);
console.log(res);
=> domain.com
正则表达式中的列表可以根据您的需要进一步扩展。 可以找到TLD列表here
答案 3 :(得分:0)
您可以使用以下RegEx获取它:/.*\.(.+)\.[com|org|gov]/
您可以在此正则表达式中添加所有受支持的域扩展名。
工作代码段:
var url = "http://www.blog.domain.gov/page/category=?";
var regEx = /.*\.(.+)\.[com|org|gov]/;
alert(url.match(regEx)[1]);