由括号外的逗号分隔的jQuery/JavaScript

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)

我熟悉基本的正则表达式规则,例如捕获组和选择器,但我仍然对前瞻或我如何解决当前情况感到困惑.

ade*_*neo 5

匹配不在括号内的任何逗号

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断言正则表达式与下面列表中不存在的单个字符不匹配
  • [^\(]量词.在零和无限次之间匹配,尽可能多次
  • \((从字面上匹配字符
  • \))从字面上 匹配字符

  • 注意:这不考虑多个嵌入的括号。`1,(2,(3,4)),5` 将得到 `[ "1", "(2", "(3,4))", "5"]`。 (2认同)