在字符串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 以 ^...
开头,这意味着:匹配以 ...
开头的字符串的一部分。这种行为当然不是故意的。
关于JavaScript 匹配 ( 后跟一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7778274/