![](/img/trans.png)
[英]Parse variable from URL to display different content on HTML page (JS)
[英]Regex to parse hash url from HTML content
我有正则表达式来解析HTML内容中的所有哈希URL。
/(\#)([^\s]+")/g
HTML内容将为
Some text <a href="#some-hash1">some link</a>some content <a href="#some-hash2">some link1</a>
预期是
#some-hash1, #some-hash2
但是当前的正则表达式返回为(结束符与哈希一起出现):
#some-hash1", #some-hash2"
我不明白为什么要加上双引号。 任何有帮助的建议。
我不会为此使用正则表达式,因为它过于矫正并且因为您可以简单地循环浏览锚点以获取其hrefs的值...
var anchors = document.querySelectorAll('a'); var hrefs = []; anchors.forEach(function(e){ hrefs.push(e.getAttribute('href')); }); console.log(hrefs);
<a href="link 1">link 1</a> <a href="link 2">link 2</a>
使用非捕获括号,
/(\#)([^\s]+(?="))/g
演示
var z = 'Some text <a href="#some-hash1">some link</a>some content <a href="#some-hash2">some link1</a>'; console.log( z.match(/(\\#)([^\\s]+(?="))/g) );
我假设您正在查看结果中$ 2的内容。
如果是这样,则问题出在“第二个捕获组内部。将/(\\#)([^\\s]+")/g
更改为/(\\#)([^\\s]+")/g
导致正确的结果。
我建议加入捕获小组。 然后/(\\#[^\\s]+)"/g
将返回$1=>#some-hash1, #some-hash2
由于$ 1始终只会返回# ,我想您会在程序中的其他地方将其修剪掉,所以也许您应该使用/\\#([^\\s]+)"/g
来返回some-hash1, some-hash2
而不包含#
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.