美文网首页
Split with "capturing parenthese

Split with "capturing parenthese

作者: 黑知更鸟 | 来源:发表于2017-08-04 15:35 被阅读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']

相关文章

网友评论

      本文标题:Split with "capturing parenthese

      本文链接:https://www.haomeiwen.com/subject/janvlxtx.html