JavaScript正则中星号的理解?

var str  = "12 fff 56 ffg2334";
console.log(str.match(/\d*/g))
*代表匹配0到多个,怎么最后匹配出来的空字符串我无法理解,求大神指点

clipboard.png

阅读 6k
4 个回答

这个问题我也很好奇,没有星号 就能匹配出数字来,有星号就很奇怪,刚刚找到了资料你可以看一下
图片描述

个人猜想:
C语言中,字符串末尾有个隐藏的 \0 ,不知道js中的字符串末尾有没有这个家伙(js不熟)
match函数得把整个字符串跑完吧,跑到最后没有了, * 代表 0 到 多,\0 也就是0个数字,所以给你返回了 ""
我以为你想得到 12 56 2334 *换成+

如果能理解 \d{0} 被当成空字符的话,那就没问题了。空字符其实就是位置,类似 ^$,请看下面的代码

"1x".match(/\d{0}/g)
// => ["", "", ""] 两个字符,三个位置

欢迎看https://pan.baidu.com/s/1qYeC0ri

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题