0

これが私の文字列です

str = "asd;images30/127ef-30-30-wm.jpg;59 | asd;images30/127ef-30-30-wm.jpg;60 | "

正規表現は

var re = new RegExp(".*?;.*?;"+$(this).parent().attr("id")+" | ","ig");

と置換機能は

str.replace(re,'');

asd;images30/127ef-30-30-wm.jpg;59 |私は実際に文字列から削除したいです。上記の正規表現の戻り値

 | asd;images30/127ef-30-30-wm.jpg;60 | 

期待されているのに対し

asd;images30/127ef-30-30-wm.jpg;60 | 
4

1 に答える 1

3

|RegExp呼び出しのをに置き換える必要があります\\|。これが必要なのは、単一のバックスラッシュが無視されるためです(たとえば、後で文字がエスケープシーケンス内で使用された場合n、これら2つは改行エスケープシーケンスになりますが、エスケープシーケンスの一部ではない文字の場合、単一のバックスラッシュ無視されます)、追加されたものは単一のものを表示します。次に、正規表現で使用して、組み込みの正規表現の「代替」シンボルではなく、リテラルパイプシンボルをエスケープしていることを示すことができます。

idfrom jQueryが数値以外である可能性がある場合は、この値をエスケープする必要がある場合もあることに注意してください。このような関数でエスケープできます。

ここでIDをハードコーディングするには(例に基づくと、値は明らかに59でした)、二重の円記号を削除しても、最初のパイプは削除されません。

str = "asd;images30/127ef-30-30-wm.jpg;59 | asd;images30/127ef-30-30-wm.jpg;60 | ";
var re = new RegExp(".*?;.*?;"+59+" \\| ","ig");
str = str.replace(re,'');

alert(str)
于 2012-08-26T00:15:23.047 に答える