有一个像这样的字符串
<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/