我有许多输入名称,最后一位数字正在改变:
<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]">
为什么替换效果如此?帮帮我搞清楚。我只需要增加最后一位数。
答案 0 :(得分:1)
用此行替换.each
的正文
$(this).attr('name', $(this).attr('name').replace(/\[\d+]$/, '[' + i + ']'));
/\[\d+]$/
模式匹配[
,1位或更多位数,然后匹配字符串末尾的]
(由于{{3 }})。
请参阅$
anchor。