如何转换
"one,cubic-bezier(0, 0, 1, 1), cubic-bezier(0, 0, 1, 1), linear"
到
["one", "cubic-bezier(0, 0, 1, 1)", "cubic-bezier(0, 0, 1, 1)", "linear"]
如何?
的JavaScript。
这不一样。 Becouse引号(左侧和右侧),这里( - 左侧) - 右侧。
不要在JS工作。
'ease,cubic-bezier(0, 0, 1, 1), linear,2,3'.split(/,(?=[^()]*((|$))/gi);
结果:
ease,(,cubic-bezier(0, 0, 1, 1),, linear,,2,,3
答案 0 :(得分:2)
假设parens不能嵌套(在这种情况下你不能使用JS正则表达式)。
试试这个:
,(?![^()]*\))
快速分解:
, # match a comma [1]
(?! # start negative look ahead [2]
[^()]* # match zero or more non-parens chars [3]
\) # match the closing paren [4]
) # stop look ahead
用简单的英语写成:
匹配逗号[1],只有在没有逗号和结束语[3] 之间没有任何关键字的情况下才会提前关闭[4] [2]
答案 1 :(得分:1)
根据您的示例:
var str = "one,cubic-bezier(0, 0, 1, 1), cubic-bezier(0, 0, 1, 1), linear";
var arr = str.split(/,\s*(?!\s*\d)/);
console.log(arr.toSource());
// result
// ["one", "cubic-bezier(0, 0, 1, 1)", "cubic-bezier(0, 0, 1, 1)", "linear"]
以下是fiddle