js split with regex 将保持不匹配的分隔符
js split with regex will keep unmatched seperator
我有以下代码:
console.log('xx,,blue,ffff'.split(/[^\,]+/));
// ["", ",,", ",", ""]
console.log('xx,,blue,ffff'.split('xx'));
// ["", ",,blue,ffff"]
'xx,,blue,ffff'.match(/[^\,]+/)
// ["xx"]
我不明白为什么前两个例子的结果不一样,为什么拆分会保留不匹配的逗号。
编辑:添加我原来的想法:
/[^\,]+/
将匹配 xx
然后 split
方法将 'xx,,blue,ffff'
与 xx
拆分并得到 ["", ",,blue,ffff"]
,但是结果是 ["", ",,blue,ffff"]
我哪里错了?
I can not figure out why the result of the above two examples are not
same and why split will keep the unmatched comma
String.split
结果不保留匹配结果,因为它将输入字符串从中拆分(通过将匹配项视为分隔符)。
如果您不想让逗号出现在结果中,您不应该否定它。试试这个
console.log('xx,,blue,ffff'.split(/[,]+/));
我从 \,
中删除了 \
以仅保留 ,
你的第一个例子是
console.log('xx,,blue,ffff'.split(/[^\,]+/));
它将给定的字符串拆分为 anything that is not comma
。在您的字符串中,有三个部分不是 comma
- xx
、blue
和 ffff
。这些是分割字符串的分隔符。所以你得到 "", ",,", ",", ""
.
在你的第二个例子中
console.log('xx,,blue,ffff'.split('xx'));
在xx
的基础上对字符串进行拆分。所以有两个字符串,一个在 xx
之前,即 empty
,一个在 xx
之后,即 ,,blue,ffff
我有以下代码:
console.log('xx,,blue,ffff'.split(/[^\,]+/));
// ["", ",,", ",", ""]
console.log('xx,,blue,ffff'.split('xx'));
// ["", ",,blue,ffff"]
'xx,,blue,ffff'.match(/[^\,]+/)
// ["xx"]
我不明白为什么前两个例子的结果不一样,为什么拆分会保留不匹配的逗号。
编辑:添加我原来的想法:
/[^\,]+/
将匹配 xx
然后 split
方法将 'xx,,blue,ffff'
与 xx
拆分并得到 ["", ",,blue,ffff"]
,但是结果是 ["", ",,blue,ffff"]
我哪里错了?
I can not figure out why the result of the above two examples are not same and why split will keep the unmatched comma
String.split
结果不保留匹配结果,因为它将输入字符串从中拆分(通过将匹配项视为分隔符)。
如果您不想让逗号出现在结果中,您不应该否定它。试试这个
console.log('xx,,blue,ffff'.split(/[,]+/));
我从 \,
中删除了 \
以仅保留 ,
你的第一个例子是
console.log('xx,,blue,ffff'.split(/[^\,]+/));
它将给定的字符串拆分为 anything that is not comma
。在您的字符串中,有三个部分不是 comma
- xx
、blue
和 ffff
。这些是分割字符串的分隔符。所以你得到 "", ",,", ",", ""
.
在你的第二个例子中
console.log('xx,,blue,ffff'.split('xx'));
在xx
的基础上对字符串进行拆分。所以有两个字符串,一个在 xx
之前,即 empty
,一个在 xx
之后,即 ,,blue,ffff