与正则表达式拆分的 js 将保持无与伦比的分隔符
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
拆分'xx,,blue,ffff'
并得到["", ",,blue,ffff"]
,但结果是["", ",,blue,ffff"]
我错在哪里?
你的第一个例子是
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
我不知道为什么上面两个例子的结果不是 相同以及为什么拆分将保留不匹配的逗号
String.split
结果不会保留匹配的结果,因为它会从中拆分输入字符串(通过将匹配的项目视为分隔符(。
如果你不希望逗号出现在结果中,你不应该否定它。试试这个
console.log('xx,,blue,ffff'.split(/[,]+/));
我从',
中删除了'
,只保留,
相关文章:
- Javascript和RegEx:拆分并保留分隔符
- 不使用分隔符分解字符串
- 设置自动分隔符的自定义属性
- 通过多个分隔符解析字符串
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- Javascript Regex-从价格中抓取分隔符
- 基于多个分隔符计数项目
- 使用Regex拆分字符串,保留分隔符
- 如何使用JQuery提取URL中最后一个/分隔符之前的最后一个值
- JS将分隔符分隔的字符串转换为数组元素
- 插入多个文本分隔符-javascript
- 是<!--JavaScript中的有效注释分隔符
- 不带小数点的千分隔符的正则表达式
- 图表.js 2.0 使用货币和千位分隔符格式化 Y 轴
- 千位分隔符的正则表达式
- JavaScript 是否考虑了本地小数分隔符
- 在 Javascript 中拆分包含单次出现(不是两次)分隔符的字符串
- 拆分第二个分隔符值
- 基于两个分隔符进行拆分
- 与正则表达式拆分的 js 将保持无与伦比的分隔符