1

長い文字列があり、その中のすべての数値をインクリメントして、残りのテキストをそのままにしておく必要があります。

この機能を使っています

newHtml = newHtml.replace(/\d+/, function (val) { return parseInt(val) + 1; });

これは、フリーテキストの数値ではうまく機能しますが、数値が角かっこで囲まれていると失敗します。例:

<input id="Form[0]_Phone" name="Form[0].Phone" type="text" value="">

になる必要があります

<input id="Form[1]_Phone" name="Form[1].Phone" type="text" value="">

私はこの例を使って助けてみました。いくつかのバリエーションを試しましたが、正規表現のスキルが失敗しました。

どんな援助も大歓迎です。

4

2 に答える 2

2

「グローバル」フラグを使用する必要があり、すべての出現を置き換える必要があります。

すなわち

newHtml = newHtml.replace(/\d+/g, function (val) { return parseInt(val) + 1; });

ここで動作することを確認してください: http://jsfiddle.net/4S7CE/

「g」がないと、一致の最初のインスタンスのみが置き換えられます。

于 2012-07-27T10:37:11.610 に答える
2

説明されている動作を引き起こすパターンには何もありません-角括弧内の数字も影響を受けるはずです。明らかな問題の 1 つは、見つかった最初の数字のみに影響を与えていることですg。パターンの終了スラッシュの後にグローバル フラグを追加してください。

私のために働く - このフィドルを参照してください: http://jsfiddle.net/ypUmg/

于 2012-07-27T10:38:27.290 に答える