正则表达式从字符串返回所有图像标签

时间:2018-10-17 17:45:07

标签: javascript regex ecmascript-6

我已经为此进行了一段时间的尝试,但没有成功。希望有人知道我一直在寻找的知识。

我有一个我无法修改的字符串,我需要从该字符串中获取存储在数组中的所有标签。

the string looks like this :

    <p><strong>BLA BLA BLA</strong></p>

<p><strong>BLA BLA BLA</p>

<p><em>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ut mauris vulputate, pellentesque eros sit amet, consequat quam. Nam tempor ipsum ac ligula aliquam, vel dictum elit feugiat. Vivamus vehicula dolor quis ligula malesuada gravida. Curabitur suscipit ante ut sodales sodales. Donec mattis odio a sodales iaculis. Integer urna augue, convallis non euismod a, facilisis vel ex. Nulla sed sodales felis, ac semper odio. Maecenas malesuada justo ac porta faucibus. Aliquam tempor justo ut egestas bibendum.</em></p>
<img alt="lorem ipsum" data-caption="enter caption here" data-entity-type="file" data-entity-uuid="901b744e-a279-4271-9e96-f0836fed3e76" src="https://www.blablabla.com/image.png" />
<p>&nbsp;</p>
<img alt="lorem ipsum" data-caption="enter caption here" data-entity-type="file" data-entity-uuid="901b744e-a279-4271-9e96-f0836fed3e76" src="https://www.blablabla.com/image.png" />
<p>&nbsp;</p>

我尝试使用几个正则表达式,但是它们无法返回所有图像标签,它们返回的第一个或根本不返回。

.match('<img.*');
.match('<img\ssrc\s*=\s*"(.+?)\/>');

有人知道我能做什么吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

您应该避免使用正则表达式来解析HTML,但是由于这是img标签的一种情况,因此无法嵌套,因此在此范围内,您只能使用此正则表达式。从组1中选择网址

<img.*?\s+src=['"]?(.*)['"]?.*?\/>

在这里检查

https://regex101.com/r/qAf16A/3