Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于捕获重复组的正则表达式Javascript_Javascript_Html_Regex_Transformation_Regex Group - Fatal编程技术网

用于捕获重复组的正则表达式Javascript

用于捕获重复组的正则表达式Javascript,javascript,html,regex,transformation,regex-group,Javascript,Html,Regex,Transformation,Regex Group,我有一些以下格式的测试数据- "lorem ipsum <img src='some_url' class='some_class' /> lorem ipsum <img src='some_url' class='some_class' /> ipsum <img src='some_url' class='some_class' />" 现在我尝试创建一个示例正则表达式 var regex = /(.*(<img\s+src=['"](.+)['

我有一些以下格式的测试数据-

"lorem ipsum <img src='some_url' class='some_class' /> lorem ipsum <img src='some_url' class='some_class' /> ipsum <img src='some_url' class='some_class' />"
现在我尝试创建一个示例正则表达式

var regex = /(.*(<img\s+src=['"](.+)['"]\s+(class=['"].+['"])?\s+\/>)+?.*)+/ig
var regex=/(.*()+?.*)+/ig
现在,当我用示例文本尝试这个正则表达式时,我得到-

regex.exec(sample_text) => [0:"lorem ipsum <img src='some_url1' class='some_class1' /> lorem ipsum <img src='some_url2' class='some_class2' /> ipsum <img src='some_url3' class='some_class3' />"
1:"lorem ipsum <img src='some_url1' class='some_class1' /> lorem ipsum <img src='some_url2' class='some_class2' /> ipsum <img src='some_url3' class='some_class3' />"
2:"<img src='some_url3' class='some_class3' />"
3:"some_url3"
4:"class='some_class3'"]
regex.exec(示例文本)=>[0:“lorem ipsum lorem ipsum”
1:“同侧知识同侧知识”
2:""
3:“一些”3“
4:“一些”]
如何在javascript中转换示例html文本 添加到带有属性的标记html对象数组中。

。使用a解析字符串,然后使用CSS查询从DOM获取图像,这样会更加可靠和易于阅读

var html = "lorem ipsum <img src='some_url' class='some_class' /> lorem ipsum <img src='some_url' class='some_class' /> ipsum <img src='some_url' class='some_class' />"

var nodes = new DOMParser().parseFromString(html, "text/html").body.childNodes

您需要使用
String.prototype.match()
这有点复杂,您可以尝试在
.split()
中使用正则表达式将输入拆分为所需输出的形式。此外,您还可以在生成的数组的每个部分上运行正则表达式来提取所需的数据。。也许您甚至想使用DOM操作来实现这一点。我看不出你为什么要通过regex来搞乱html,我想用PDFMake.js创建动态PDF,它们需要严格格式的文档对象定义,正如我上面指定的那样,这就是为什么我想尝试在regex的帮助下解析html内容。split似乎是一个很好的尝试选项,我完全忘记了这个选项,但我相信DOMParser非常适合我在这里的任务,所以我也将尝试一次
var html = "lorem ipsum <img src='some_url' class='some_class' /> lorem ipsum <img src='some_url' class='some_class' /> ipsum <img src='some_url' class='some_class' />"

var nodes = new DOMParser().parseFromString(html, "text/html").body.childNodes
var images = new DOMParser().parseFromString(html, "text/html").querySelectorAll("img")
var array = new Map([...images].map(img => [img.previousSibling.nodeValue, img]))