Lev*_*ris 1 javascript regex jquery
我正在使用jQuery和JavaScript!
例如,我有一个字符串
"cubic-bezier(0.25, 0, 0.25, 1), ease-in, ease-out, linear"
Run Code Online (Sandbox Code Playgroud)
..我想把它拆分成这个数组:
// (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
Run Code Online (Sandbox Code Playgroud)
..但相反,我得到:
Array[7]
0: cubic-bezier(0.25
1: 0
2: 0.25
3: 1)
4: ease-in
5: ease-out
6: linear
Run Code Online (Sandbox Code Playgroud)
我尝试了十几个解决方案,但却发现我尝试它的任何方式到目前为止都无效.以下是我以前的一些尝试:
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})*[^\"]*$)(?![^()]*\\))");
Run Code Online (Sandbox Code Playgroud)
我熟悉基本的正则表达式规则,例如捕获组和选择器,但我仍然对前瞻或我如何解决当前情况感到困惑.
匹配不在括号内的任何逗号
var myString = "cubic-bezier(0.25, 0, 0.25, 1), ease-in, ease-out, linear";
var parts = myString.split(/\,\s?(?![^\(]*\))/);
console.log(parts)Run Code Online (Sandbox Code Playgroud)
/\,\s?(?![^\(]*\))/
Run Code Online (Sandbox Code Playgroud)
\,,从字面上 匹配字符\s?匹配任何空格字符.该?量词次0和1之间匹配 (?![^\(]*\)) Negative Lookahead断言正则表达式与下面列表中不存在的单个字符不匹配 [^\(]量词.在零和无限次之间匹配,尽可能多次\((从字面上匹配字符\))从字面上 匹配字符