这最终将成为更大表达式的一部分,但我在这里将其简化为更简单的形式(即,真正有可能是 40 个字符,而不是这里的 19 个字符)。给定以下输入:
;123?T
我与这个正则表达式成功匹配:
^(?:;(\d{0,19})\?.){1,40}$
但是,我没有与此正则表达式匹配:
^(?:;(\d{0,19})\?.){3,40}$
我唯一要改变的是最小长度,这两个输入都应该满足。为什么第一个找到匹配项而第二个没有?也许我只是不理解这个量词,但我认为它只是 {MIN, MAX}。
此外,我已经在以下两个在线测试人员中对此进行了测试:
regular-expressions.info
regexpal.com
最佳答案
用表达式的第一部分 ^(?:;(\d{0,19})\?.)
您正在匹配所有这些 ;123?T
.
用表达式的下一部分 {1,40}
您是说匹配上述 1 到 40 次。请注意,如果您尝试匹配 ;123?T
连续3次,这个显然不行,你说{3,40}
就是这种情况.
关于regex - 正则表达式最小长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097882/