Can';无法在Javascript中匹配此正则表达式

Can';无法在Javascript中匹配此正则表达式,javascript,regex,replace,match,Javascript,Regex,Replace,Match,我需要应用regexp来替换字符串块 这是我的代码: var style = "translate(-50%, -50%) translate3d(3590px, 490px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1)"; style = style.replace(/translate3d\(.+\)/,"asdf"); 我需要替换那个部分:“translate3d(3590px,490px,0px)” 但它不起作用,因

我需要应用regexp来替换字符串块

这是我的代码:

var style = "translate(-50%, -50%) translate3d(3590px, 490px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1)";

style = style.replace(/translate3d\(.+\)/,"asdf");
我需要替换那个部分:
“translate3d(3590px,490px,0px)”

但它不起作用,因为它将替换到最后一个“)”,所以它将是:
“translate(-50%,-50%)asdf”
匹配所有字符。强制它跳过右括号:

style = style.replace(/translate3d\([^)]+\)/,"asdf");
试一试:

> var style = "translate(-50%, -50%) translate3d(3590px, 490px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1)";
> style = style.replace(/translate3d\([^)]+\)/,"asdf");
'translate(-50%, -50%) asdf rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1)'
使用非贪婪正则表达式:

style = style.replace(/translate3d\(.+?\)/,"asdf");
放在
+
之后会使它使用最短匹配,而不是最长匹配。

它会替换到最后一个“)”,因为默认情况下“+”量词是贪婪的。您可以通过在其后面放置“?”来更改它


正确的正则表达式是:
translate3d\(.+?\)

我想你应该在他编辑问题之前开始键入答案,因为他确实转义了括号。你不是转义了他的括号吗?(很抱歉,如果我读错了修订页,我是个新手)无论如何,你是对的,我在你编辑他的问题之前就开始打字了。不,我只是修改了格式。我永远不会以任何重要的方式修改问题中的代码。编辑历史记录没有显示该更改,这意味着它是在创建问题的一两分钟内完成的。好吧,我不知道。谢谢那么,我将删除我答案的这一部分。