我是否知道将以下代码输出的原因为: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>
答案 0 :(得分:4)
因为?
是正则表达式中的一个特殊字符,所以它是一个运算符在它可选之前生成单个项目。因此,/10?/
匹配1可选,后跟0。因此,为什么它只匹配1
,或{100}中的10
或1000中的10
。
答案 1 :(得分:1)
这是handy cheat sheet for reg expressions。
你需要的位于中间位置:
您可以使用代码here
查看这些效果的不同效果答案 2 :(得分:1)
?是一个元字符意味着零或多个匹配。
要匹配'?',请转义。
var pat = /10\?/g;
答案 3 :(得分:0)
看起来你可能会混淆优先级
/10?/
这仅适用于?
0
。如果您希望使用10
修改?
,那么您必须对其进行分组:
/(10)?/
或者,如果您不需要捕获:
/(?:10)?/
类似地,
/ab+/
匹配abbbbbb
。如果你想匹配ababab
,那么你必须写:
/(?:ab)+/
答案 4 :(得分:0)
修正:
/10+\?/g