为什么正则表达式。*?只匹配javascript中的空字符串?

时间:2014-01-07 09:47:33

标签: javascript regex match non-greedy

/.*?/.exec("abc");//output [""]

我认为.*?非贪婪,应该返回a

2 个答案:

答案 0 :(得分:6)

这是预期的,因为.*表示0或更多,并且通过放置?使其非贪婪,因此它匹配空字符串。

如果您想匹配a,那么您应该使用:

 /.+?/.exec("abc");

DIfference是+而不是*,这意味着使用非贪婪量词匹配1个或多个字符。

答案 1 :(得分:0)

使用*代替例如+您允许将空字符串作为非贪婪选项进行匹配。