正则表达式最小长度

时间:2013-06-13 21:59:46

标签: regex

这最终会成为一个更大的表达式的一部分,但我已经将它简化为一个更简单的形式(即,这里可能有40个字符而不是19个字符)。鉴于以下输入:

;123?T

我与这个正则表达式成功匹配:

^(?:;(\d{0,19})\?.){1,40}$

但是,我没有得到这个正则表达式的匹配:

^(?:;(\d{0,19})\?.){3,40}$

我唯一要改变的是最小长度,输入应满足这两个长度。为什么第一个找到匹配而第二个找不到?也许我只是不理解这个量词,但我认为它只是{MIN,MAX}。

此外,我已在以下两位在线测试人员中对此进行了测试:

regular-expressions.info

regexpal.com

1 个答案:

答案 0 :(得分:8)

使用表达式^(?:;(\d{0,19})\?.)的第一部分,您将匹配所有;123?T

对于表达式{1,40}的下一部分,您要说的是匹配上述1到40次。请注意,如果您尝试连续3次匹配;123?T,这显然不起作用,当您说{3,40}时就是这种情况。