Javascript:正则表达式从样式字符串中替换translate3d字符串

时间:2015-01-18 15:19:58

标签: javascript regex

我正在尝试用translate3d(-640px, 0px, 0px);替换字符串translate(-640px)的出现。

这就是我在做的事情:

var string = "width: 960px; height: 548px; transition: 0s; -webkit-transition: 0s; transform: translate3d(-640px, 0px, 0px); -webkit-transform: translate3d(-640px, 0px, 0px);";
var regExp = //; //I am not able to create this one
var matches = regExp.exec(string);
var left = matches[1]; //this will give the value -640px
var newstring = string.replace('translate3d('+left+', 0px, 0px)', 'translate('+left+')');

有两个问题:

  1. 我无法创建正确的正则表达式,只能提取左值。
  2. .replace()方法只替换字符串的一个出现,而我需要全部替换它们。
  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以使用:

var newstring = string.replace(/translate3d\(([^,]+)[^)]*\)/g, 'translate($1)');

RegEx Demo

答案 1 :(得分:0)

尝试

translate3d\(([^,]+),\s*0[^,1-9]*,\s*0[^)1-9]*\)

替换为translate($1)

如果第二个和第三个值为0,则仅替换translated3d的出现次数。(无论单位 - 0px0cm,您可以将其命名。)

regex101 demo.