繁体   English   中英

JavaScript匹配(后跟一个数字

[英]JavaScript match ( followed by a digit

在字符串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, '*(');

但这是行不通的。 提前致谢。

删除^ ,然后将数字分组:

'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,这意味着:匹配以...开头的字符串的一部分。 这种行为当然不是故意的。

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)可能很重要

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

请查看此页面的 “替换文本语法”下的更多详细信息。

这是一个小提琴可以满足您的要求。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM