正则表达式:为什么/ ^((\ d | - ){5,10})/匹配' 20866美国'匹配组为6?

时间:2014-09-03 18:59:29

标签: regex

我试图为某些邮政编码写一个正则表达式并注意到这个奇怪之处。

/^((\d|-){5,10})/上使用'20866 United States'会产生匹配组:

1)20866

2)6

我不明白第二场比赛。有什么想法吗?

1 个答案:

答案 0 :(得分:6)

(\d|-)也是一个群组,当你有一个重复的群体时,最后一次重复通常是被捕获的群体。 (有些引擎也可以捕获所有引擎。)

您可以将其设为非捕获:

(?:\d|-){5,10}

或完全避开该组:

[\d-]{5,10}