JavaScript匹配(后跟数字

时间:2011-10-15 14:04:08

标签: javascript regex

在字符n+n(n+n)中,n代表任意数字或数字,我想匹配(并将其替换为*(,但仅限于2+22(2+2)后跟一个数字或数字。

示例:

  • 我想将2+22*(2+2)更改为-1(3)
  • 我想将-1*(3)更改为4+(5/6)
  • var str = '2+2(2+2)'.replace(/^[0-9]\(/g, '*('); 应保持原样。

这就是我所拥有的:

{{1}}

但它不起作用。提前谢谢。

3 个答案:

答案 0 :(得分:7)

删除^,并将数字分组:

'2+2(2+2)'.replace(/([0-9])\(/g, '$1*(')
'2+2(2+2)'.replace(/(\d)\(/g, '$1*(')    //Another option: [0-9] = \d

建议2.通常是有效数字(= 2)。以下RegExp删除数字和括号之间的点。

'2+2(2+2)'.replace(/(\d\).?\(/g, '$1*(') //2.(2+2) = 2*(2+2)

括号创建一个组,可以使用$n引用该组,其中 n 是组的索引:$1

您使用^...启动了RegExp,这意味着:匹配以...开头的字符串的一部分。这种行为当然不是故意的。

答案 1 :(得分:2)

var str = '2+2(2+2)+3(1+2)+2(-1/2)'.replace(/([0-9])\(/g, '$1*(');

http://jsfiddle.net/ZXU4Y/3/

这是你写的(括号必须跟一个数字)。

所以4(会更改为4*(,例如4(-1/2)

可能很重要

答案 2 :(得分:2)

您可以使用捕获组和反向引用来执行此操作。

有关详情,请查看“替换文字语法”下的this page

这是fiddle,可以满足您的要求。

希望这有帮助。