我有以下代码:
console.log('xx,,blue,ffff'.split(/[^\,]+/));
// ["", ",,", ",", ""]
console.log('xx,,blue,ffff'.split('xx'));
// ["", ",,blue,ffff"]
'xx,,blue,ffff'.match(/[^\,]+/)
// ["xx"]
我不明白为什么前两个示例的结果不同以及为什么 split 会保留不匹配的逗号。
编辑:添加我最初的想法:
/[^\,]+/
将匹配 xx
,然后 split
方法将拆分 'xx,, blue,ffff'
与 xx
会得到 ["", ",,blue,ffff"]
,但结果是 ["", ",,blue,ffff"]
我哪里错了?
最佳答案
你的第一个例子是
console.log('xx,,blue,ffff'.split(/[^\,]+/));
它将给定字符串拆分为任何非逗号
。在您的字符串中,有三个部分不是逗号
- xx
、blue
和 ffff
。这些是将分割字符串的分隔符。所以你会得到"", ",,", ",", ""
。
在你的第二个例子中
console.log('xx,,blue,ffff'.split('xx'));
它根据xx
分割字符串。所以有两个字符串,一个在xx
之前,是empty
,一个在xx
之后,即,,blue,ffff
关于javascript - js 用正则表达式分割将保留不匹配的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280789/