扫码关注官方订阅号
有这样一个正则表达式 /.(w+)/g,exec一个字符串'a.b.c',结果是什么?不是得到.b和.c吗?
/\.(\w+)/g.exec('a.b.c')
小伙看你根骨奇佳,潜力无限,来学PHP伐。
虽然你加了g标志,但是exec每次执行还是只返回1个结果,不过会记录该次结果的index,之后继续执行exec的话,会继续进行捕获,直到没有捕获结果返回null,之后再执行的话会又重头开始捕获。
var reg = /\.(\w+)/g reg.exec('a.b.c') //[".b", "b"] reg.exec('a.b.c') //[".c", "c"] reg.exec('a.b.c') //null reg.exec('a.b.c') //[".b", "b"] reg.exec('a.b.c') //[".c", "c"] reg.exec('a.b.c') //null
/\.(\w)/g.exec('a.b.c') // [".b", "b"] 'a.b.c'.match(/(\.\w+)/g) // [".b", ".c"]
正则捕获是 有懒惰性的,捕获到 一个能匹配上的 就不会 继续了。。但是 他会记录下 当前开始查找的str的index, 比如 第一次捕获的是 .b index是从0开始的 下次index 从3 开始,也就是第二个 . 直到找到null为止,当你继续捕获 ,index又会从0开始;正则还有 贪婪性。。可以百度体会 一下
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
虽然你加了g标志,但是exec每次执行还是只返回1个结果,不过会记录该次结果的index,之后继续执行exec的话,会继续进行捕获,直到没有捕获结果返回null,之后再执行的话会又重头开始捕获。
正则捕获是 有懒惰性的,捕获到 一个能匹配上的 就不会 继续了。。但是 他会记录下 当前开始查找的str的index, 比如 第一次捕获的是 .b index是从0开始的 下次index 从3 开始,也就是第二个 . 直到找到null为止,当你继续捕获 ,index又会从0开始;
正则还有 贪婪性。。可以百度体会 一下