我有这样的输入:
<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 :(得分: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
中只有一个数字实例。
答案 1 :(得分: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);
&#13;
答案 2 :(得分:0)
var name = $(this).attr("name");
var num = 1 + (1*name.replace(/.*\[(\d+)\].*/, "$1"));
$(this).attr("name",name.replace(/\[(\d+)\]/, "["+num+"]"));