在字符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}}
但它不起作用。提前谢谢。
答案 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*(');
这是你写的(括号必须跟一个数字)。
所以4(
会更改为4*(
,例如4(-1/2)
答案 2 :(得分:2)