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

时间:2013-07-26 05:37:03

标签: javascript regex replace match

我需要应用正则表达式来替换字符串块。

这是我的代码:

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"

3 个答案:

答案 0 :(得分:7)

使用非贪婪正则表达式:

style = style.replace(/translate3d\(.+?\)/,"asdf");

?之后放置+会使用最短匹配而不是最长匹配。

答案 1 :(得分:3)

.匹配所有字符。强制它跳过结束括号:

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)'

答案 2 :(得分:0)

它取代直到最后一个“)”,因为默认情况下“+”量词是贪婪的。您可以通过放置“?”来更改此设置就在它之后。

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