我正在我的一个网络应用程序中添加一个新字段,供访问者添加产品。按下“添加产品”会克隆现有输入之一,我将其设置为空白值。
但是我需要更新名称。名称采用以下格式:
<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/