Barret Lee Home
facebook send mail to barret sina weibo
share

当正则匹配零个字符edit

日期:2014-04-28

作者: Barret Lee

"something".match(/\s*(.*?)\s*/)
> ['', '']

"something".match(/^\s*(.*?)\s*$/)
> ["something", "something"]

为何前者匹配的结果为空?

如果你不清楚正则的贪婪模式和非贪婪模式,请先移步这里.

整个匹配分为三步:

  1. 第一个 \s*, 贪婪模式把字符全部吞掉,然后回溯,直到第一个字符任然没找到
  2. 第二步是 .*? 由于是非贪婪模式匹配了一个字符就结束了,继续第三步
  3. 第三步匹配失败,回溯到第二步,那第二步会继续减少吞掉的字符,于是字符数缩减到零。

可能这么说还是不太清晰,先看看这个对比: qq20140428195101

关于返回结果不是 null 而是 "",你可以理解为匹配到了零个 a。

标签: JavaScript regexp
上一篇:git版本回退操作
下一篇:解析URL到对应的Object