0

次のような文字列を置き換えるために使用しているJavaScriptコードでRegExpを使用しています。

[1]

次のようになります。

[2]

これはすべて正常に機能しますが、前の文字が次の文字でない場合にのみこれを実行したいと思います。

]

そう

何か[1]は 何か[2]になるべきです

しかし

something[1][somethingelse][1]は something[2][somethingelse][1]になるべき

私の現在のコードは次のようになります。

var first = 1;
var count = 2;
var pattern = escapeRegExp("[" + first + "]");
var regex = new RegExp(pattern, 'g');

$(this).html().replace(regex, '['+count+']'));

アドバイスをいただければ幸いです。

ありがとう

4

3 に答える 3

2

part の前に否定された文字クラスを使用できます。[1]これは、 以外の任意の文字と一致します]。そしてそれをグループでキャプチャします:

var pattern = escapeRegExp("([^\\]])[" + first + "]");
var regex = new RegExp(pattern, 'g');

$(this).html().replace(regex, '$1['+count+']'));
于 2013-10-11T10:34:56.917 に答える
2

必要なのはLookaroundです。この正規表現を試してください:

/(?<!\[)\[1\]/[2]/

編集: JS がこれをサポートしていないことを知らされたので、否定された文字クラスを試すことができます。

/[^\[]\[1\]/[2]/
于 2013-10-11T10:35:13.770 に答える