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 に答える