正则表达式在分隔符之间捕获字符串并将其排除

时间:2017-06-16 22:09:01

标签: html node.js regex string match

我在这个论坛上看到了一个接近我的"请求"但还不够 (Regexp to capture string between delimiters)。

我的问题是:我有一个HTML页面,我只会获得所有" img"这个页面的标签,并将它们放在一个数组中而不使用cheerio(我使用节点js)。

问题是我宁愿排除分隔符。 我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

是的,这可以使用正则表达式,但是使用本机DOM方法会更容易(并且可能更快但不要引用我)。让我们从正则表达式方法开始。我们可以使用捕获组轻松解析src标记的img



var html = `test<div>hello</div>
<img src="first">
<img class="test" src="second" data-lang="en">
test
<img src="third" >`;
var srcs = [];
html.replace(/<img[^<>]*src=['"](.*?)['"][^<>]*>/gm, (m, $1) => { srcs.push($1) })

console.log(srcs);
&#13;
&#13;
&#13;

然而,更好的方法是使用getElementsByTagName
(注意以下内容将获得某种父域URL,因为srcs是相对/假的,但你明白了)

&#13;
&#13;
var srcs = [].slice.call(document.getElementsByTagName('img')).map(img => img.src);

console.log(srcs);
&#13;
test<div>hello</div>
<img src="first">
<img class="test" src="second" data-lang="en">
test
<img src="third" >
&#13;
&#13;
&#13;