0

次の式:

targetString = targetString.replace(parenthesizedRegEx, "$3$1$11");

ここで、parenthesizedRegEx は括弧で囲まれた有効な正規表現であり、一致したテキストを、3 番目の項目、最初の項目、最初の項目、およびリテラル "1" を連結した文字列に置き換えます。「2 桁」の括弧項目インデックス「$11」を無視して、「$1」と文字どおりの「1」として扱っているかのようです。

使用すべきエスケープやその他の分離はありますか?

この結果は、FF および IE9 で発生します。

ご協力いただきありがとうございます。答えが恥ずかしいほど簡単であることを願っています!!

更新の編集:

問題を包括的に示すために jfiddle を実行しました。私が使用している正規表現には、否定先読みアサーションが含まれています。アサーションにすべての開き括弧を含めると、失敗するようです。挿入の開いた括弧をまったく含めないと、失敗します。しかし、アサーションの最初の開始括弧以外をすべて含めると、機能します。(?:...) で形成されたグループには番号が付いていません。しかし、カウントを正しく行うには、アサーション内に他のすべての開いた括弧を含める必要があるようです。したがって、jfiddle で、$11 は機能しないが、$10 は機能することがわかります。

http://jsfiddle.net/pxMFx/1/

これを見てくれてありがとう。

4

1 に答える 1

0

これは私にとってはうまくいきます:

var regex = /^(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w).*$/i;

alert("abcdefghijklmno".replace(regex,"$3$1$11"));

http://jsfiddle.net/J3RAa/

重要なのは、文字列内の特定の場所をターゲットにしている場合は、文字列全体を正規表現と一致させる必要があるということです。上記の正規表現から を取り出してみる.*と、置換が壊れていることがわかります。

于 2013-03-07T15:34:12.917 に答える