javascript - 正则表达式应用split问题
巴扎黑
巴扎黑 2017-04-11 11:22:57
[JavaScript讨论组]
var color='red,blue,green';
color.split(/[^\,]+/);返回["", ",", ",", ""]

为什么?(这道题没有错,可以去控制台测试下,我想知道这个结果是怎么得来的)

巴扎黑
巴扎黑

全部回复(5)
天蓬老师
(/[^\,]+/)

匹配非 , 字符

因此

color.split(/[^\,]+/)

是以 redbluegreen 这三个字符串为分割符的

分割的结果显然是剩下的两个空串中间夹两个逗号。

['', ',', ',', '']
高洛峰

正则 '/[\^,]+/' 匹配出 'red' 'blue' 'green'.
有若干个占位符, 相当于color为'$,$,$'字符串.

// 好比调用如下方法
color.split('$');  // return ['',',', ',', '']

两个''空字符串.
存在的原因是split函数分隔的时候会将分隔符分隔成左右两部分.
如果左边没有字符就返回空字符

怪我咯

split接收的参数是分隔符。所以应该是 color.split(',');

高洛峰

这样写color.split(',');

高洛峰

首先你得清楚 正则的意思
你这段(/[^\,]+/的意思是匹配非 , 字符
然后color.split(/[^\,]+/) 是以三个字符串分隔的 最后匹配剩下的自然就是:

['', ',', ',', '']
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号