我正在使用jQuery&的JavaScript !!
我有一个字符串,例如
"cubic-bezier(0.25, 0, 0.25, 1), ease-in, ease-out, linear"
..我想把它拆分成这个数组:
// (the following has no leading or trailing spaces:)
Array[4]
0: cubic-bezier(0.25, 0, 0.25, 1)
1: ease-in
2: ease-out
3: linear
..但我得到了:
Array[7]
0: cubic-bezier(0.25
1: 0
2: 0.25
3: 1)
4: ease-in
5: ease-out
6: linear
我尝试过十几种解决方案,但却发现我尝试过的任何方式到目前为止都无法解决。以下是我以前的一些尝试:
var myString = "cubic-bezier(0.25, 0, 0.25, 1), ease-in, ease-out, linear";
myString.split(",(?![^\(\)]*>)");
myString.split('(?:\(.*?\))|(,)');
myString.split(",(?=[^\]]*(?:\[|$))");
myString.split(",(?![^()]*(?:\([^()]*\))?\))");
myString.split('/,(?![^()]*(?:\([^()]*\))?\)/g');
myString.split(",(?=(([^']*'){2})*[^']*$)(?=(([^\"]*\"){2})*[^\"]*$)(?![^()]*\\))");
我熟悉基本的正则表达式规则,例如捕获组和选择器,但我仍然对前瞻或如何解决当前情况感到困惑。
答案 0 :(得分:5)
匹配任何不在括号内的逗号

var myString = "cubic-bezier(0.25, 0, 0.25, 1), ease-in, ease-out, linear";
var parts = myString.split(/\,\s?(?![^\(]*\))/);
console.log(parts)
/\,\s?(?![^\(]*\))/
字面匹配字符\,
,
匹配任何空格字符。 \s?
量词匹配0到1次?
否定前瞻断言正则表达式与下面列表中不存在的单个字符不匹配(?![^\(]*\))
量词。零和无限次之间的匹配,尽可能多次[^\(]
字面匹配字符\(
(
字面匹配字符\)