2

有一个类似的字符串

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

我想用正则表达式在 javascript 中获取图像路径'images/_attachments/07-08.jpg''images/_attachments/09-11.jpg'文件名。'07-08.jpg''09-11.jpg'

所以我编码喜欢

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);

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

4

3 回答 3

1

有了这个你不匹配“或>,也许它有帮助?

var strPattern=new RegExp('<img [^>]*src="([^>"]+\/([^>"]+))"[^>]*?>', 'g');
于 2013-05-07T14:29:27.160 回答
1

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

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

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

于 2013-05-07T14:23:40.157 回答
1

使用此模式匹配属性内容:

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

我你用'。而不是'^">',正则表达式可能跨越几个标签。

您还需要使用_arrMatches[1]而不是_arrMatches[2]获取完整路径。

于 2013-05-07T14:30:48.017 回答