使用RegExp匹配括号,然后递增
我一直在试图找到一种方法来匹配字符串末尾的圆括号所包围的Javascript字符串中的数字,然后对其进行增量。
说我有一个字符串:
var name = "Item Name (4)";
我需要一个RegExp来匹配(4)部分,然后我需要增加4,然后把它放回到字符串中。
这是我迄今为止的正则表达式:
b([0-9]+)$b
这个正则表达式不起作用。 此外,我不知道如何提取检索到的整数并将其放回到字符串中的相同位置。
谢谢。
替换方法可以将函数作为第二个参数。 它获得匹配(包括子匹配)并返回替换字符串。 其他人已经提到,括号需要逃避。
"Item Name (4)".replace(/((d+))/, function(fullMatch, n) {
return "(" + (Number(n) + 1) + ")";
});
我只能通过三个步骤来思考一个方法:提取,增量和替换。
// Tested on rhino
var name = "Item Name (4)";
var re = /((d+))/;
match = re.exec(name);
number = parseInt(match[1]) + 1;
name = name.replace(re, "(" + number + ")");
模式的重要部分:
为了这个模式工作,你应该逃避括号。 另外 b和$不需要。 从而
var s = "Item Name (4)";
var match = /((d+))/.exec( s );
var n = Number(match[1])+1;
alert( s.replace( /(d+)/, '('+n+')' ) );
解决方案由david.clarke(已测试)
"Item Name (4)".replace(/(([0-9]+))/, '('+(1+RegExp.$1) + ')');
但我认为它太简洁了
UPD :事实证明,RegExp。$ 1不能用作替换参数的一部分,因为它只能在Opera中使用
链接地址: http://www.djcxy.com/p/76817.html上一篇: Use RegExp to match a parenthetical number then increment it
下一篇: Javascript Regex: How to put a variable inside a regular expression?