var str = "12 fff 56 ffg2334";
console.log(str.match(/\d*/g))
*代表匹配0到多个,怎么最后匹配出来的空字符串我无法理解,求大神指点
var str = "12 fff 56 ffg2334";
console.log(str.match(/\d*/g))
*代表匹配0到多个,怎么最后匹配出来的空字符串我无法理解,求大神指点
个人猜想:
C语言中,字符串末尾有个隐藏的 \0 ,不知道js中的字符串末尾有没有这个家伙(js不熟)
match函数得把整个字符串跑完吧,跑到最后没有了, * 代表 0 到 多,\0 也就是0个数字,所以给你返回了 ""
我以为你想得到 12 56 2334 *换成+
如果能理解 \d{0}
被当成空字符的话,那就没问题了。空字符其实就是位置,类似 ^
和 $
,请看下面的代码
"1x".match(/\d{0}/g)
// => ["", "", ""] 两个字符,三个位置
10 回答11.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
Zero-Length Regex Matches
https://www.regular-expressio...
比如用
\b
去匹配abcd
就能发现头尾被匹配了