关于正则表达式的一个疑问

做9月17号京东ios笔试时碰到如下问题:
对于如下正则表达式:
[^\d](\d){4}[^\d]
对201003abc2020.1234,1111 3匹配结果为c2020.和,1111
求问为什么.1234,无法匹配上?
#笔试题目##京东#
全部评论
[^\d](\d){4}[^\d]表示:表示先匹配一个非数字,加四个数字,再加一个非数字 解释一下 [^\d]表示匹配非0-9的任意字符 \d表示匹配0-9任意一个数字 {4}表示重复四次, 即(\d){4}表示任意连续4个重复的0-9数字 我们再来看这个式子, 201003abc2020.1234,1111 3 首先匹配的是c2020.然后再从1开始匹配,直到,1111再次匹配成功。因此最后只有c2020.和,1111两个匹配成功。 至于.1234,为何无法匹配,这是因为在匹配c2020.成功时,下一个字符从1开始匹配,而不是继续从.开始匹配。 如果只想匹配.1234,很容易,像下面一样加个边界即可。 \b[^\d](\d){4}[^\d]\b \b[^\d](\d){4}[^\d]\b
2 回复 分享
发布于 2020-09-19 11:58

相关推荐

蔡徐kun:还行,早挂晚挂都是挂。早点挂进池子等别人捞你
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务