JavaScript,RegEx-如何获取实际找到的字符串

JavaScript,RegEx-如何获取实际找到的字符串,javascript,regex,math,Javascript,Regex,Math,为什么这样不行 var str = "nd2(31)jnd"; str = str.replace(/[0-9](/,/[0-9]*(/); 我想用前面的数字替换每个数字,例如:“2”(“用”2*(“你的正则表达式是错误的,这就是你想要的: str.replace(/([0-9]+)\(/g, "$1*("); $1引用了parens()中的第一个匹配项,您必须转义\(才能匹配它 更新:为全局匹配添加g 2(3(4+5))=>2*(3*(4+5)) 更新:使其在parens的另一端也能工作,

为什么这样不行

var str = "nd2(31)jnd";
str = str.replace(/[0-9](/,/[0-9]*(/);

我想用前面的数字替换每个数字,例如:“2”(“用”2*(“

你的正则表达式是错误的,这就是你想要的:

str.replace(/([0-9]+)\(/g, "$1*(");
$1
引用了parens
()
中的第一个匹配项,您必须转义
\(
才能匹配它

更新:为全局匹配添加
g

2(3(4+5))=>2*(3*(4+5))

更新:使其在parens的另一端也能工作,结合:

str.replace(/(\d+)\(/g, "$1*(").replace(/\)(\d+)/g, ")*$1");

,用“2*”替换例如:“2”(“可能更有效的方法是:str.replace(/([\d])(/,“$1*(”);@Piyuesh在模式中,您不需要逃逸
),在
\d
周围不需要方括号,这与
[0-9]基本相同
这正是我想要的!!!在我发现这一点的时候,我用了另一种方法,但你的方法更紧凑了!:我如何才能做到这一点:)2到)*2??