我在网站上有一堆表格,里面有很多输入元素。这些元素的name属性的格式为“property-0”。但是,用户可能需要多个字段集,就像当前的字段集一样,所以我用jQuery clone()克隆字段集,但后来我需要在结尾处增加数字。数字可能高于10,所以我不能只选择最后一个字符。
这就是我的尝试:
name.replace(/([0-9]+)$/, String(Number('$1')+1));
但它只是给了我property-NaN
。谁知道我做错了什么?
答案 0 :(得分:4)
您可以将函数作为第二个参数传递给.replace()
,如下所示:
name.replace(/([0-9]+)$/,function(a, m) { return +m+1; });
You can test it out here,如果您对+m
感到满意,可随意将parseInt(m, 10)
替换为{{1}}。
答案 1 :(得分:3)
您正在将字符串'$ 1'转换为数字(它不是),因此它变为NaN(非数字)。您需要将回调函数传递给.replace()
,而不是:
name.replace(/([0-9]+)$/, function(str, p1) {
return Number(p1) + 1;
});
答案 2 :(得分:0)
您不能像这样使用$1
。只有将它直接放入替换字符串或使用回调函数时才有效。