javascript - 如何增加通过正则表达式匹配的数字?

标签 javascript regex

我正在我的一个网络应用程序中添加一个新字段,供访问者添加产品。按下“添加产品”会克隆现有输入之一,我将其设置为空白值。

但是我需要更新名称。名称采用以下格式:

<input type="text" name="product[0][0][3][title]" value="my product" id="input-AbGHtQS3" maxlength="150" />

我需要递增最后一个数字索引,即本例中的 3。

我写了一个正则表达式来匹配适当的字符,但我如何增加最后一个数字?

这是我的正则表达式:

/^product\[\d+\]\[\d+\]\[(\d+)\]\[.+\]/

我如何增加最后一个数字?

最佳答案

来自:Use RegExp to match a parenthetical number then increment it

replace 方法可以将一个函数作为它的第二个参数。它获取匹配项(包括子匹配项)并返回替换字符串。其他人已经提到括号需要转义。

"Item Name (4)".replace(/\((\d+)\)/, function(fullMatch, n) {
    return "(" + (Number(n) + 1) + ")";
});

所以,

*编辑:

这应该可行

"product[0][0][3][title]".replace(/(^product\[\d+\]\[\d+\]\[)(\d+)(\]\[.+\])/, function(fullMatch, n, a, o) {
    return n + (Number(a) + 1) + o;
});

关于javascript - 如何增加通过正则表达式匹配的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1912536/

相关文章:

javascript - 用JS控制边框高度

javascript - 在特定div中的所有图像<img>中动态添加<a>标签

python - 清理重新匹配对象

javascript - 在数据加载之前加载完整日历

c - Perl 正则表达式在不使用可变长度后视的情况下查找打包结构的名称?

java - 将多个正则表达式组与前瞻结合起来

python - 从 pandas 的数据框列中搜索字符串模式

javascript - 使用 ng-class 的指令

javascript - 是否有一种 JavaScript/css 方法可以使同步滚动区域类似于 "meld"?

javascript - AngularJS HTTP Get 没有得到响应