0

...( '2073')...を....( '2074')...に置き換えたいのですが、最終的には...(( '2074'))...になります。理由を理解してください。

次のJavaScriptコードがあるとします。

var sGroupIdentifier = "2073";
var sSelectedGroupTR = "... onclick=\"MakeNewGroup('2073')\">New</a> ... ";
var rex = new RegExp("\('" + sGroupIdentifier + "'\)", "g")

sNewGroupIdentifier = "2074";
var sNewGroupTR = sSelectedGroupTR.replace(rex, "(\'" + sNewGroupIdentifier + "\')");
alert(sNewGroupTR)

もちろん、.replaceの括弧を削除することはできますが、理解できません。私が見る限り、( '2073')に一致し、' 2073'には一致しません。これは、(\ではなく()を使用したためです。

誰もが説明する気になります...

4

1 に答える 1

2

文字列リテラルを使用して正規表現を作成しているため、最終的には\((はなく正規表現コンパイラになり\(ます。正規表現コンパイラにを表示させたい場合\は、文字列リテラルでエスケープする必要があります。

var rex = new RegExp("\\('" + sGroupIdentifier + "'\\)", "g");

文字列を使用して正規表現を作成することを避ける多くの理由の1つです(ただしsGroupIdentifier、文字列の場合と同様に、おそらくできません)。

于 2013-02-11T09:31:55.877 に答える