2010-12-28 13 views
0

私は、入力要素の束を使ってウェブサイトにフォームを持っています。これらの要素のname属性は、 "property-0"の形式です。しかし、ユーザーは現在のものと同じように複数のフィールドセットを必要とすることがあるので、jQuery clone()でフィールドセットをクローンしますが、最後に番号を増やす必要があります。数字は10を超える可能性があるので、最後の文字は選択できません。Javascriptの正規表現を使用して "name"属性を置換する

これは私がしようとしているものです:

name.replace(/([0-9]+)$/, String(Number('$1')+1)); 

をそれはちょうど私property-NaNを与えます。誰でも私が間違っていることを知っている?あなたは.replace()の2番目の引数として関数を渡すことができ

答えて

4

、次のように:

name.replace(/([0-9]+)$/,function(a, m) { return +m+1; }); 

You can test it out here、あなたはそれとMOR快適ならparseInt(m, 10)+mを交換して自由に感じます。

+0

おかげでたくさん!私はあなたがそこで機能を使うことができるとは知らなかった。 – Nick

+0

@Nick - ようこそ:) –

0

このように$1を使用することはできません。これは、置換文字列に直接入れるか、コールバック関数を使用する場合にのみ機能します。

3

文字列 '$ 1'を数値に変換しています(そうではありません)ので、NaN(数字ではありません)になります。代わりに.replace()にコールバック関数を渡す必要があります:

name.replace(/([0-9]+)$/, function(str, p1) { 
    return Number(p1) + 1; 
}); 
関連する問題