2016-04-05 39 views
0

我有一個這樣的輸入:REG前表達式查找和替換一些在[]

<input type="hidden" value="0.0" name ="sale[sales_details_attributes][1][tax]"> 

,我想遞增[1] [2](我會不知道是否有1或2或什麼,這只是舉例)name屬性裏面,它可以用正則表達式表達進行,但我不能讓它工作我想這:

var name = $(this).attr("name").replace("[?(\d+)?\]", "[2]"); 

有一種方式來獲得的1使用正則表達式增加1?

+0

這是簡單的只用'[1]'做 - 但你要求一個解決方案,讓您增加_any_多少? –

+0

是的,但實際上我不知道[]中的數字是什麼,這只是解釋,我編輯了我的問題,對不起。 –

+1

['/\[\d+\]/'](https://regex101.com/r/sZ3qQ5/1)? – Shafizadeh

回答

2

執行此操作的最佳方法是將該數字提取爲字符串,將其轉換爲數字,然後將toString()replace結合使用。

var input_string = "sale[sales_details_attributes][3434][tax]"; 
var number = Number(input_string.match(/(\d+)/)[0]); 
input_string.replace(number.toString(), (number+1).toString()) 

這應該適用於大多數數字。但是,它假定您的input_string中只有一個個實例。

+0

是的,但實際上我不知道[]中的數字是什麼,這只是解釋,我編輯了我的問題,對不起。 –

+0

@JoseMiguelLedón更新以解決新問題。 –

0

使用String.replace()。裁判:MDN

var name = "sale[sales_details_attributes][123][tax]"; 
 
var str = name.replace(/\[(\d+)\]/,function(match, p1){ 
 
    return "[" + (parseInt(p1,10) + 1) + "]"; 
 
}); 
 
alert(str);

+0

不錯,這是我一直在尋找,謝謝。 –

+0

@JoseMiguelLedón如果答案適合您,請接受答案,以便其他用戶可以輕鬆看到答案。謝謝! –

0
var name = $(this).attr("name"); 
var num = 1 + (1*name.replace(/.*\[(\d+)\].*/, "$1")); 
$(this).attr("name",name.replace(/\[(\d+)\]/, "["+num+"]"));