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

このパターンを使用して、属性の内容を一致させます。

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

私はあなたが「。」を使用します '^">' の代わりに、正規表現がいくつかのタグにまたがる場合があります。

フルパスを取得する_arrMatches[1]代わりに使用する必要もあります。_arrMatches[2]

于 2013-05-07T14:30:48.017 に答える
1

あなたのパスマッチングは貪欲であるため、ファイル名に対して望ましい結果が得られません。非貪欲にすると、 のみに一致images/するため、それを 2 倍にするか、ファイル名マッチャーにスラッシュを含めないようにする必要があります。パターンを次のように変更します

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

ところで、正規表現リテラルの/<img.*?src="(.*?\/([^\/"]*))".*?>/g方が見栄えがします。

于 2013-05-07T14:23:40.157 に答える