使用RegEx JS替换字符串中的字符

时间:2017-10-09 21:00:35

标签: javascript jquery regex

我有许多输入名称,最后一位数字正在改变:

<input name="ProductsLang[1][text][0]">
<input name="ProductsLang[1][text][1]">
<input name="ProductsLang[1][text][2]">

我是动态添加新输入的,我需要相应地重新计算所有索引,因为我可能会在其间添加一个。所以我有一个小函数用正则表达式替换它们:

$('input').each(function(i) {
    var matches = $(this).attr('name').match(/ProductsLang\[\d+\]\[[^\]]+\]\[(\d+)\]/);
    var newName = $(this).attr('name').replace(matches[1], i);
    $(this).attr('name', newName);
});

并且它很奇怪...而不是改变最后一位数字我可以得到这样的结果:

<input name="ProductsLang[1][text][0]">
<input name="ProductsLang[1][text][1]">
<input name="ProductsLang[2][text][1]">
<input name="ProductsLang[1][text][3]">

为什么替换效果如此?帮帮我搞清楚。我只需要增加最后一位数。

1 个答案:

答案 0 :(得分:1)

用此行替换.each的正文

$(this).attr('name', $(this).attr('name').replace(/\[\d+]$/, '[' + i + ']'));

/\[\d+]$/模式匹配[,1位或更多位数,然后匹配字符串末尾的] (由于{{3 }})。

请参阅$ anchor