扫码关注官方订阅号
小伙看你根骨奇佳,潜力无限,来学PHP伐。
这是正则的历史遗留问题
正则在unix系统刚出现的时候,只在一行文本内匹配,默认.匹配\n以外的任意ascii字符
.
\n
以后的正则都继承这一bug
其它的语言内置的正则引擎,例如python,用re.DotAll来表示:.可以匹配\n
re.DotAll
ES5没有这个设定,所以用互补字符集来弥补,例如:[\S\s]、[\W\w]、[\D\d]……
.在[]里面时匹配的是 字符"."
[]
"."
因为*可以匹配空字串"",仔细看下面的例子,就明白了~
*
""
s='aa.' s.match(/[.\n]*/) //[""] s.match(/[.\n]+/) //["."] s.match(/[.\n]*/g) //["", "", ".", ""]
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这是正则的历史遗留问题
正则在unix系统刚出现的时候,只在一行文本内匹配,默认
.匹配\n以外的任意ascii字符以后的正则都继承这一bug
其它的语言内置的正则引擎,例如python,用
re.DotAll来表示:.可以匹配\nES5没有这个设定,所以用互补字符集来弥补,例如:[\S\s]、[\W\w]、[\D\d]……
.在[]里面时匹配的是 字符"."因为
*可以匹配空字串"",仔细看下面的例子,就明白了~.在[]里面时匹配的是 字符"."