我有一个包含http://example.com/user/9800的刺痛,我希望能够从该字符串中获取域名(http://example.com),而不管字符串的长度如何。见下面的解释
var string = "http://example.com/user/9800";
或
var string ="http://www.example.com/user/8399";
新字符串
var new string = "http://example.com";
答案 0 :(得分:2)
这是一个粗略的正则表达式模式,使用js:
来完成这项工作var string = "http://example.com/user/9800";
/*string can be any url*/
var ns=string.replace(/(\w+:\/\/[\w\d\.\:]*)\/(.*)/g,"$1");
alert(ns);
答案 1 :(得分:1)
使用简单但通用的正则表达式来提取域名:
/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)/im
你可以这样使用它:
var domain = url.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)/im);
if (domain) {
console.log(domain[0]);
}
一个例子:
function doMatch() {
var url = $("#urltext").val();
var domain = url.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)/im);
if (domain) {
alert(domain[0]);
}
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Enter url here: <input type="text" id="urltext" />
<br/><input type="button" onclick="doMatch()" value="try me!" />
&#13;
答案 2 :(得分:0)
使用以下正则表达式:/(.+?(?=\/user))/
。这将捕获/user
之前的所有内容,然后您可以通过获取第二个结果(第一个是原始字符串)来使用它。请查看以下代码段:
var re = /(.+?(?=\/user))/;
var str1 = 'http://example.com/user/9800';
var newstr1 = re.exec(str1)[1];
console.log(newstr1);
var str2 ="http://www.example.com/user/8399";
var newstr2 = re.exec(str2)[1];
console.log(newstr2);
答案 3 :(得分:0)
使用此代码:
<html>
<head>
</head>
<body>
<p id="x"></p>
<script>
var x = document.getElementById("x");
var str = "https://example.com/user/9800";
var patt = /(http:\/\/|https:\/\/)+.*.com/gmi;
x.innerHTML = str.match(patt);
</script>
</body>
</html>
&#13;