Split with "capturing parentheses"

开发中遇到一个场景,类似下面这条字符串需要进行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']
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容