我的变量htmlContent
包含一个字符串,其中包含格式正确的HTML代码,其中包含多个img
标记。
我试图获取图片src
属性的所有值,并将它们放在数组srcList
中。
但是,我面对以下代码时遇到的问题是它始终会警告一个只包含1个源值的数组,而我将其设置为推送 all 源代码数组的URL而不只是一个。
let srcList = [],
imgSrc,
regex = /<img.*src="(.*?)"/gi;
while ((imgSrc = regex.exec(htmlContent)) !== null) {
srcList.push(imgSrc[1]);
}
alert(JSON.stringify(srcList));
我如何按照我的预期来完成这项工作?
答案 0 :(得分:4)
正则表达式中Animated.timing(
this.state.posY
).stop();
和.*
之间的img
贪婪地匹配从第一个src
到最后一个img
的所有内容 - 否则您的代码基本上是正确的,但只会抓住最后一个图像源。
将贪婪匹配替换为仅在每个src
标记内匹配的内容的示例(如注释中所述,html字符串是单行):
<img>
(我觉得有必要在此处插入强制性的“don't try to parse HTML with regular expressions”警告。请考虑使用let srcList = [],
imgSrc,
regex = /<img[^>]*src="(.*?)"/gi;
let htmlContent = '<img src="foo"><img class="bat" src="bar"><img src="baz">';
while (imgSrc = regex.exec(htmlContent)) {
srcList.push(imgSrc[1]);
}
console.log(srcList);
之类的内容。)