2

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

这是我的代码:

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"

4

3 回答 3

7

使用非贪心正则表达式:

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

放在?后面+使它使用最短的匹配而不是最长的匹配。

于 2013-07-26T05:41:21.160 回答
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)'
于 2013-07-26T05:40:55.097 回答
0

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

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

于 2013-07-26T05:43:00.770 回答