1

3 つの画像マークアップで構成されたこの文字列から、含まれていないものを選択するにはどうすればよいですか?

 id="img_menu":

ストリング:

 <img class="alignnone " blabla />
  <img class="dddd " blabla />
 <img  style="blalbla"  id="img_menu"/>

この正規表現はすべてのマークアップを選択します:

    /<img*[^>]*[^>]./

しかし、3番目の画像を選択するための適切なコードを追加できませんでした! 助けてください。

4

2 に答える 2

2

while/global ループで複数行/not-dot-all モードを使用します。

 ^(?!.*id=\"img_menu\").*$

html ではなく文字列のみであるため、これを行うことができます。

于 2013-09-12T16:09:27.960 に答える
1

これは私にとってはうまくいきますが、ルックアラウンドは私の強みではないため、より効率的な方法があるかもしれません:

JS

var str = '<img class="alignnone " blabla />\n\
<img class="dddd " blabla />\n\
<img  style="blalbla"  id="img_menu"/>';
str.match(/(?!<img.+?id="img_menu".*?\/>)<img.+?\/>/g);
//["<img class="alignnone " blabla />", "<img class="dddd " blabla />"]

フィドル

PHP

<?php
$code = '<img class="alignnone " blabla />
<img class="dddd " blabla />
<img  style="blalbla"  id="img_menu"/>';
$newStr = preg_replace('/(?!<img.+?id="img_menu".*?\/>)<img.+?\/>/','[matched_img]',$code);
var_dump(htmlentities($newStr));
?>

出力:

string(92) "[matched_img] [matched_img] <img style="blalbla" id="img_menu"/>"
于 2013-09-12T16:02:01.073 に答える