限制正则​​表达式中匹配的数字的数量

时间:2015-01-26 17:32:00

标签: regex

我需要匹配5到7个字符之间的一系列数字。我认为这样可以解决问题:

([0-9]{5,7})\w+

反对这个字符串:

Sample text for testing:  22 333 4444 55555 666666 7777777 

正如您在regexr example中看到的,它与具有5个数字的数字不匹配,并且匹配长于7个数字的数字。

为什么这不像我期望的那样工作?

2 个答案:

答案 0 :(得分:2)

  

它与具有5个数字的数字不匹配,并且匹配长于7个数字的数字。

请注意,以下\w+也会匹配数字。 ([0-9]{5,7})\w+期望5,6,7位数加上至少一个单词字符。但是55555之后就没有一个单词字符存在。所以它无法匹配输入字符串上的55555

答案 1 :(得分:1)

正则表达式([0-9]{5,7})\w+无法按预期工作,因为:

example-string:12345

([0-9]{5,7})\w+
    ^ Matches the digits: 12345

([0-9]{5,7})\w+
             ^ Cannot match a word character (letter, digit, underscore)

example-string:123456789

([0-9]{5,7})\w+
    ^ Matches the digits: 1234567

([0-9]{5,7})\w+
             ^ Matches the digits: 89

要匹配5到7位数字,请使用:

\b\d{5,7}\b

\b ....... matches at the beginning or end of a word.
\d{5,7}... matches a digit in the range of 0-9 between 5 and 7 times.