我制作了一个正则表达式,用于捕获链接的短URL。例如:
https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=picture%20of%20a%20potato
我的正则表达式是:
/(https:\/\/.+?)\/.+/
现在这只会捕获:
https://www.google.com
我现在要做的是将捕获的RegEx存储到变量中。非常感谢任何帮助或建议。
答案 0 :(得分:2)
<a>
DOM元素为您提供了这种href分割!方法如下:
var a = document.createElement('a');
a.href = 'https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=picture%20of%20a%20potato';
console.log({
protocol: a.protocol,
host: a.host,
hostname: a.hostname,
port: a.port,
pathname: a.pathname,
search: a.search
});
返回:
{
"protocol": "https:",
"host": "www.google.com",
"hostname": "www.google.com",
"port": "",
"pathname": "/webhp",
"search": "?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8"
}
有关详细信息,请参阅https://www.abeautifulsite.net/parsing-urls-in-javascript。
答案 1 :(得分:1)
你的正则表达式不会捕获https://www.google.com
。
使用捕获组并使用regex.exec()
应用正则表达式。然后访问返回的数组以设置变量:
str="https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=picture%20of%20a%20potato";
regex = new RegExp('(https?://.*?\)/');
match = regex.exec(str)[1];
console.log(match);
&#13;
答案 2 :(得分:0)
你不需要&#34; g&#34;旗帜,所以它是
var matchResult = someUrlString.match(/(https?:.*?\.{1,3})/i);
然后matchResult
将是一个数组(或null
)。如果不是null
,则正则表达式将导致索引0和1都包含匹配的文本。
您的正则表达式,用于记录,匹配
之类的内容