使用Javascript正则表达式替换“name”属性

时间:2010-12-28 21:04:52

标签: javascript jquery regex

我在网站上有一堆表格,里面有很多输入元素。这些元素的name属性的格式为“property-0”。但是,用户可能需要多个字段集,就像当前的字段集一样,所以我用jQuery clone()克隆字段集,但后来我需要在结尾处增加数字。数字可能高于10,所以我不能只选择最后一个字符。

这就是我的尝试:

name.replace(/([0-9]+)$/, String(Number('$1')+1));

但它只是给了我property-NaN。谁知道我做错了什么?

3 个答案:

答案 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。只有将它直接放入替换字符串或使用回调函数时才有效。

相关问题