0

次のコードがあります。

var temp = '<p class="fasfasfasd">Type <strong>Markdown</strong> here. {:.fasfasfasd}</p>'+
                '<p class="fdfsdf">fdsfsdf {:.fdfsdf}</p>'
//this should match everything like {:*}
var re = /\{:(.*?)\}/;
console.log(temp);
temp = temp.replace(re, "", 'gm');
console.log(temp);

ここに実行例があります: http://jsfiddle.net/AL8DN/

文字列 temp 内の正規表現 re のすべての出現を削除したいと思います。ただし、正規表現の 2 番目の一致は削除されません。私は何を間違えたのですか?

4

1 に答える 1

3

Mozilla 開発者リファレンスから:

String.replace メソッドでの flags パラメータの使用は非標準です。このパラメーターを使用する代わりに、対応するフラグを持つ RegExp オブジェクトを使用します。

したがって、これを次のように変更します。

var temp = '<p class="fasfasfasd">Type <strong>Markdown</strong> here. {:.fasfasfasd}</p>'+
                '<p class="fdfsdf">fdsfsdf {:.fdfsdf}</p>'
var re = /\{:(.*?)\}/gm;
console.log(temp);
temp = temp.replace(re, "");
console.log(temp);

正しく動作しているようです。

于 2013-10-15T17:41:05.513 に答える