javascript正则表达式匹配所有

标签 javascript regex

有一个像这样的字符串

<img src="images/_attachments/07-08.jpg" style="width: 520px; height: 693px;" /><img src="images/_attachments/09-11.jpg" style="width: 520px; height: 693px;" />

我想获取图片路径'images/_attachments/07-08.jpg' , 'images/_attachments/09-11.jpg'和文件名'07-08.jpg' , '09-11.jpg'在带有正则表达式的 JavaScript 中。

所以我编码如下

var str='<img src="images/_attachments/07-08.jpg" style="width: 520px; height: 693px;" /><img src="images/_attachments/09-11.jpg" style="width: 520px; height: 693px;" />'
var strPattern=new RegExp('<img.*?src="(.*\/(.*?))".*?>', 'g');
var arrMatch=new Array();
var strHTML='';

while(arrMatches=_strPattern.exec(str)){
    strHTML+='<div>'+arrMatches[2]+'</div>';
}

$('body').html(strHTML);

但我得到的只是路径,而不是文件名,我该如何解决这个问题?

最佳答案

您的路径匹配是贪婪的,因此您将无法获得所需的文件名结果。如果你让它变得非贪婪,它只会匹配 images/ ,因此您需要将其加倍或使文件名匹配器不包含斜杠。将您的模式更改为

var strPattern=new RegExp('<img.*?src="(.*?\/([^/"]*))".*?>', 'g');
//                                        ^

顺便说一句,正则表达式文字 /<img.*?src="(.*?\/([^\/"]*))".*?>/g看起来会更好。

关于javascript正则表达式匹配所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16421334/

相关文章:

javascript - 使用 jQuery 获取 JSON 数据安全吗?

javascript - 隐藏的 JavaScript 代码

javascript - 我如何在 DataTable jQuery 插件中打印总金额

regex - 可以将包含有序交替的正则表达式重写为仅使用无序交替吗?

javascript - 匹配浮点正则表达式

java - 将 Java 模式转换为 Javascript 模式

css - 验证 CSS 是有效语法

javascript - 2 个使用 Ajax 的 Bootstrap 登录模式,只有 1 个有效

javascript - 如何在更改窗口大小时调整网页页面上的文本?

Python os.walk topdown true 与正则表达式