javascript - JS的正则式[.\n]*为什么不能替换全字符?
伊谢尔伦
伊谢尔伦 2017-04-11 10:53:34
[JavaScript讨论组]
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
高洛峰

这是正则的历史遗留问题

正则在unix系统刚出现的时候,只在一行文本内匹配,默认.匹配\n以外的任意ascii字符

以后的正则都继承这一bug

其它的语言内置的正则引擎,例如python,用re.DotAll来表示:.可以匹配\n

ES5没有这个设定,所以用互补字符集来弥补,例如:[\S\s]、[\W\w]、[\D\d]……


.[]里面时匹配的是 字符"."

因为*可以匹配空字串"",仔细看下面的例子,就明白了~

s='aa.'
s.match(/[.\n]*/)
//[""]
s.match(/[.\n]+/)
//["."]
s.match(/[.\n]*/g)
//["", "", ".", ""]
怪我咯

.在[]里面时匹配的是 字符"."

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

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