Split with "capturing parenthese

2017-08-04  本文已影响0人  黑知更鸟

开发中遇到一个场景,类似下面这条字符串需要进行split操作,

const str = 'name: xxx AND age: 12 OR sex: male';

希望得到的结果是,

['name: xxx', 'age: 12', 'sex: male']

一开始凭直觉的解决方案是:

str.split(/ (AND|OR) /g)
// ['name: xxx', 'AND', 'age: 12', 'OR', 'sex: male']

也就是说当你在split方法中用正则,并且正则中包含()的时候,被()捕获的部分也会被留在split结果中。

查了一下moz的api文档发现确实如此(Capturing parentheses),不过不同浏览器的支持情况不一。

思考了一下,发现可以通过非捕获分组的方式实现:

str.split(/ (?:AND|OR) /g)
// ['name: xxx', 'age: 12', 'sex: male']
上一篇 下一篇

猜你喜欢

热点阅读