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