我需要将css变换值分成数组,但要将旋转值保持在一起。
例如:
'translate3d(20px, 5px, 10px) rotateX(20deg) rotateY(10deg) rotateZ(0deg) skew3d(20deg, 10deg) rotateX(-20deg) rotateY(100deg) rotateZ(-30deg)'
需要
[
'translate3d(20px, 5px, 10px)',
'rotateX(20deg) rotateY(10deg) rotateZ(0deg)',
'skew3d(20deg, 10deg)',
'rotateX(-20deg) rotateY(100deg) rotateZ(-30deg)'
]
您可以假设旋转始终按此顺序rotateX(20deg) rotateY(10deg) rotateZ(0deg)
。
如何在javascript中使用正则表达式执行此操作?谢谢!
答案 0 :(得分:0)
假设旋转属性将始终按顺序排列,您可以使用以下正则表达式拆分字符串:/\s(?=\S+\(.*?\))(?!rotate(?:Y|Z))/
。
表达式/\s(?=\S+\(.*?\))(?!rotate(?:Y|Z))/
将匹配\s
个字符,如果它们后跟(?=\S+\(.*?\))
个包含括号的字符。如果\s
/ rotateY
跟rotateZ
后跟(?!rotate(?:Y|Z))
字符,它也会否定var string = 'translate3d(20px, 5px, 10px) rotateX(20deg) rotateY(10deg) rotateZ(0deg) skew3d(20deg, 10deg) rotateX(-20deg) rotateY(100deg) rotateZ(-30deg)';
var properties = string.split(/\s(?=\S+\(.*?\))(?!rotate(?:Y|Z))/);
个字符。
[
"translate3d(20px, 5px, 10px)",
"rotateX(20deg) rotateY(10deg) rotateZ(0deg)",
"skew3d(20deg, 10deg)",
"rotateX(-20deg) rotateY(100deg) rotateZ(-30deg)"
]
返回:
rle