javascript - javascript捕获img src“...”之间的所有内容
问题描述
嗨,我想捕获 img src="..." 之间的所有内容,但不确定为什么下面的代码不起作用
var stringHtml = '<img src="content://media/external/images/media/21260"><img src="content://media/external/images/media/21260"><img src="content://media/external/images/media/21260">';
var srcArray = ['x.png', 'y.png', 'z.png']
var rgx = /<img src="([^"]+)"/g;
var match;
for (var a = 0; a < srcArray.length; a++) {
match = rgx.exec(stringHtml);
stringHtml = stringHtml.replace(match[1], srcArray[a]);
}
alert(stringHtml);
解决方案
就像经常回答一样,不要使用正则表达式来解析 html。相反,解析字符串并轻松可靠地获取 src
var stringHtml = '<img src="content://media/external/images/media/21260"><img src="content://media/external/images/media/21260"><img src="content://media/external/images/media/21260">';
const parser = new DOMParser().parseFromString(stringHtml, 'text/html');
for (let img of parser.getElementsByTagName('img')) {
console.log(img.src);
}
推荐阅读
- flutter - 为什么showcaseview在第一次尝试时会抛出错误?
- docker - Kafka Schema Registry 无法注册 Schema - 由于 master 未知,注册模式请求失败
- python - QTextTable 在单元格中插入一行
- java - 使用 Keytool 的 Java HTTPS 服务器
- python - 错误消息说我的目录有语法错误
- python - 如何将线程用于拥抱面变压器
- javascript - 发送 res.status.send() 后 Firebase 调用仍在执行
- java - 来自Android中不同类的setContentView(R.layout.xy)
- javascript - JavaScript `debugger` 关键字是如何工作的?
- bash - 在文本文件的第一行之前插入文件名 - 文件扩展名