【发布时间】:2017-07-10 11:24:44
【问题描述】:
tl;dr:我想在 JavaScript 中的第一个左括号和最后一个右括号中分隔一个字符串:
"abc(def)ghi" ==> ["abc", "def", "ghi"]
"abc(def(ghi)jkl)mno" ==> ["abc", "def(ghi)jkl", "mno"]
"abc(def(ghi(jkl)mno)pqr" ==> ["abc", "def(ghi(jkl)mno", "pqr"]
"abc(def(ghi)jkl)mno)pqr" ==> ["abc", "def(ghi)jkl)mno", "pqr"]
我尝试使用
"abc(def(ghi)jkl)mno".split(new RegExp('\\\(|\\\)'))
但这似乎匹配每个括号并给我["abc", "def", "ghi", "jkl", "mno"]。
我也试过这个:
"abc(def(ghi)jkl)mno".split(new RegExp('\\\((?:.*)\\\)'))
但这似乎也与括号内的整个部分匹配,并给了我["abc", "mno"]。
有没有办法只在第一个开括号和最后一个右括号分开?
【问题讨论】:
-
非正则表达式解决方案可能更快、更优雅:stackoverflow.com/questions/34648186/…
-
@ThomasMoors 提到的非正则表达式解决方案:
var i = str.indexOf('('), j = str.lastIndexOf(')', i+1), arr = !== -1 && j > i[str.substr(0,i), str.substr(i+1, j), str.substr(j+1)]: [str];
标签: javascript regex split