我有一个域名列表,例如developer.mozilla.org
。我只需要提取域名,例如mozilla.org
。我使用了RegExp
,但到目前为止没有使用它。不知道我错过了什么。
我写了这个javascript,它没有捕捉到我想要的部分。
var arr = ["developer.mozilla.org", "cdn.mdn.mozilla.net", "www.google-analytics.com", "www.youtube.com"];
var arrLength = arr.length;
var reg = new RegExp('((\\.[a-zA-Z0-9]+)(\\.[a-zA-Z0-9]+))$');
for (i=0; i< arrLength; i++)
{
console.log(arr[i].match(reg))
}
答案 0 :(得分:1)
如果您编写如下代码,则可以正常工作:
var arr = ["developer.mozilla.org", "cdn.mdn.mozilla.net", "www.google-analytics.com", "www.youtube.com"];
var arrLength = arr.length;
var reg = /[^.]+\.[^.]+$/
for (i=0; i< arrLength; i++)
{
console.log(arr[i].match(reg)[0])
}
一些解释:
首先,你的正则表达式中存在一个缺陷导致了谷歌分析。入门是错过的。我可能会建议你写这样的正则表达式而不是
var reg = /[^.]+\.[^.]+$/
您编写的正则表达式有2个捕获组,这解释了您从控制台获取的数组.log
['.mozilla.org', '.mozilla', '.org'] = [matching string, capturedGroup1, capturedGroup2]
您可以通过编写正则表达式来使您的群组无法捕获:
var reg = new RegExp('(?:(?:\\.[a-zA-Z0-9]+)(?:\\.[a-zA-Z0-9]+))$');
或使用正则表达式文字作为@Bergi建议
var reg = /(?:(?:\.[a-zA-Z0-9]+)(?:\.[a-zA-Z0-9]+))$/
在任何情况下,当您使用match
方法时,您将获得一个数组作为回报,而您真正感兴趣的是匹配的字符串,因此第一个元素在数组。你可以通过像这样重写循环体来获得预期的结果
console.log((arr[i].match(reg) || [])[0]) // note I'm concerned with string.match returning null here
如果你真的不喜欢这个数组,你可以使用字符串替换
console.log(arr[i].replace(/^.*\.([^.]+\.[^.]+)$/, '$1'))
答案 1 :(得分:0)
\w
会选择下划线和连字符。第一个元素上的substring(1)
,因此您不会打印第一个点。 :)
let arr = ["developer.mozilla.org", "cdn.mdn.mozilla.net",
"www.google-analytics.com", "www.youtube.com"];
let expr = /(\.[\/\w\.-]+)(\.[a-zA-Z0-9]+)/;
let regex = new RegExp(expr);
arr.forEach(e => console.log(e.match(regex)[0].substring(1)));
答案 2 :(得分:0)
你不需要这个简单任务的正则表达式。
var arr = ["developer.mozilla.org", "cdn.mdn.mozilla.net", "www.google-analytics.com", "www.youtube.com"];
var arrLength = arr.length;
for (var i = 0; i < arrLength; i++)
{
var parts = arr[i].split('.');
var domain = parts.slice(-2).join('.');
console.log(domain);
}
或更短的版本:
for (var i = 0; i < arr.length; i++)
{
var domainName = arr[i].split('.').slice(-2).join('.');
console.log(domainName);
}
slice(-2)
提取数组序列中的最后两个元素。