注册表达式以查找和替换[]

时间:2016-04-05 17:24:26

标签: javascript regex

我有这样的输入:

<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吗?

3 个答案:

答案 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

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

答案 2 :(得分:0)

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