JavaScript RegExp中的混乱?量词

时间:2010-05-06 10:44:30

标签: javascript regex

我是否知道将以下代码输出的原因为:1,10,10?为什么不是:10,10?

<script type="text/javascript">
var str="1, 100 or 1000?";
var patt1=/10?/g; 
document.write(str.match(patt1));
</script> 

5 个答案:

答案 0 :(得分:4)

因为?是正则表达式中的一个特殊字符,所以它是一个运算符在它可选之前生成单个项目。因此,/10?/匹配1可选,后跟0。因此,为什么它只匹配1,或{100}中的10或1000中的10

答案 1 :(得分:1)

这是handy cheat sheet for reg expressions

你需要的位于中间位置:

  • 0或更多匹配= *
  • 0或1匹配=?
  • 1个或多个匹配= +

您可以使用代码here

查看这些效果的不同效果

答案 2 :(得分:1)

?是一个元字符意味着零或多个匹配。

要匹配'?',请转义。

var pat = /10\?/g;

答案 3 :(得分:0)

看起来你可能会混淆优先级

/10?/

这仅适用于? 0。如果您希望使用10修改?,那么您必须对其进行分组:

/(10)?/

或者,如果您不需要捕获:

/(?:10)?/

类似地,

/ab+/

匹配abbbbbb。如果你想匹配ababab,那么你必须写:

/(?:ab)+/

答案 4 :(得分:0)

修正:

/10+\?/g