我需要应用正则表达式来替换字符串块。
这是我的代码:
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"
答案 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\(.+?\)
。