/.*?/.exec("abc");//output [""]
I think .*? is non-greedy and it should return a
.*?
a
Well that is expected since .* means 0 or more and by putting ? you make it non-greedy hence it match an empty string.
.*
?
If you want to match a then you should use:
/.+?/.exec("abc");
DIfference is + instead of * which means match 1 or more characters using non-greedy quantifier.
+
*
By using * instead of e.g. + you allowed for matching empty string as a non-greedy option.
Well that is expected since
.*
means 0 or more and by putting?
you make it non-greedy hence it match an empty string.If you want to match
a
then you should use:DIfference is
+
instead of*
which means match 1 or more characters using non-greedy quantifier.