2015-01-26 3 views
0

5 - 7 자 사이의 일련의 숫자를 일치시켜야합니다. 이 문자열에 대해정규식에서 일치하는 숫자의 수를 제한하십시오

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

: :이 트릭을 할 것이라고 생각

Sample text for testing: 22 333 4444 55555 666666 7777777 

당신은 숫자 5 개 번호를 가지고 일치하지 않습니다 regexr example에서보고, 이상 7 개 번호 긴 숫자를 일치 수 있듯이 .

내가 예상 한대로 작동하지 않는 이유는 무엇입니까?

+0

regex101 링크를 제공하거나 여기에 문자열을 게시하십시오. –

+0

정규식은 예제에서 내 질문에 링크되어 있습니다. 여기 다시있다 : http://www.regexr.com/3a9pb –

답변

2

5 개의 숫자가있는 숫자와 일치하지 않으며 7 개의 숫자보다 긴 숫자를 찾습니다.

다음 \w+도 숫자와 일치한다는 점에 유의하십시오. ([0-9]{5,7})\w+은 5,6,7 자리에 적어도 하나의 단어 문자를 더한 것입니다. 그러나 바로 다음에 단어 문자가 없습니다. 55555. 따라서 입력 문자열에 55555과 일치하지 않습니다.

+0

감사합니다, regexr의 기본 "w +"를 간과했습니다. –

+1

'\ b [0-9] {5,7} \ b' https://regex101.com/r/zM3pD6/6 –

+0

([\ d] {5,7}) - 클리너. –

1

예상대로 정규식 ([0-9]{5,7})\w+ doesnt't 작업 때문에 :

예 - 문자열 : 12345

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

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

예 - 문자열 : 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. 
관련 문제