【问题标题】:Replacing "name" attribute using Javascript regex使用 Javascript 正则表达式替换“名称”属性
【发布时间】:2010-12-28 21:04:52
【问题描述】:

我在一个网站上有一个包含一堆输入元素的表单。这些元素的名称属性的形式为“property-0”。但是,用户可能需要多个字段集,就像当前的一样,所以我用 jQuery clone() 克隆了字段集,但是我需要在最后增加数字。数字可能大于 10,所以我不能只选择最后一个字符。

这就是我正在尝试的:

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

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

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

    您可以将函数作为第二个参数传递给.replace(),如下所示:

    name.replace(/([0-9]+)$/,function(a, m) { return +m+1; });
    

    You can test it out here,如果您对此感到满意,请随意将 +m 替换为 parseInt(m, 10)

    【讨论】:

    • 非常感谢!我从来不知道你可以在那里使用函数。
    【解决方案2】:

    您正在将字符串 '$1' 转换为数字(不是),因此它变为 NaN(不是数字)。您需要将回调函数传递给.replace()

    name.replace(/([0-9]+)$/, function(str, p1) {
        return Number(p1) + 1;
    });
    

    【讨论】:

      【解决方案3】:

      你不能像这样使用$1。仅当您将其直接放入替换字符串或使用回调函数时才有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 2010-11-12
        • 2016-09-23
        相关资源
        最近更新 更多