较短的正则表达式,按2个条件拆分,外部有空格

Shorter regex to split by 2 criteria with spaces outside

本文关键字:拆分 外部 空格 条件 正则表达式 2个      更新时间:2023-09-26

例如,我有一个包含:'2014-12 to 1251255, 123123'的字符串,我想得到2014-121251255123123。这个是正确的:

> '2014-12 to 1251255, 123123'.split( /'s*,'s*|'s*to's*/ );
[ '2014-12', '1251255', '123123' ]

但是有比上面更短的regex吗?

我当然试过了:

> '2014-12 to 1251255, 123123'.split( /'s*(,|to)'s*/ );
[ '2014-12', 'to', '1251255', ',', '123123' ]
> '2014-12 to 1251255, 123123'.split( /'s*,|to's*/ );
[ '2014-12 ', '1251255', ' 123123' ]
> '2014-12 to 1251255, 123123'.split( /'s*[,|to]'s*/ );
[ '2014-12', '', '1251255', '123123' ]
> '2014-12 to 1251255, 123123'.split( /'s*[,|(to)]'s*/ );
[ '2014-12', '', '1251255', '123123' ]

只需使用匹配函数匹配一个或多个数字或连字符。

> '2014-12 to 1251255, 123123'.match(/['d-]+/g)
[ '2014-12', '1251255', '123123' ]

> '2014-12 to 1251255, 123123'.match(/'d+(?:-'d+)?/g)
[ '2014-12', '1251255', '123123' ]

仅在[^'d-]+上拆分。这是一个否定类,它匹配除数字和- 之外的任何内容

> '2014-12 to 1251255, 123123'.split(/[^'d-]+/)
['2014-12','1251255','123123']