2011-12-21 2 views
30

정규 표현식에 다소 익숙하며 정규 표현식 이 필요한 수량 필드에 대한 유효성 검증을하고 있습니다.RegEx : 49보다 큰 모든 숫자를 어떻게 일치시킬 수 있습니까?

50보다 크거나 같은 모든 숫자를 어떻게 일치시킬 수 있습니까?

나는
 
[5-9][0-9]+ 

을 시도하지만 그건 단지 50-99 일치합니다. 49보다 큰 모든 숫자를 비교하는 간단한 방법이 있습니까?

+1

숫자 부분을 추출하기 위해 정규 표현식을 사용하지 않은 이유가 있습니까? 거기에서 그것을 변환하여 숫자로 테스트 할 수 있습니까? 훨씬 더 간단 해 보입니다. –

+0

우리 시스템을 준수하려면 regex를 사용해야합니다. 너무 길어서이 주석 블록에 대한 이야기가 뒤죽박죽입니다. 말할 필요도없이 다른 방법이 있다면, 나는 그것을 사용할 것입니다. @ridgerunner의 정수만 사용됩니다. – Maxx

답변

59

제 자리 범위 5-9 판정 있다는 사실은 두 자리의 경우 적용된다. 모든 숫자를 확인하고 있으며, 문자열이 실제로 수를 나타냅니다 확인하기 위해 앵커를 종료/시작했습니다

^([5-9]\d|\d{3,})$ 

이 정규 표현식 : 그래서, 2 자리의 경우에는 그 확인 및 직접 이상의 숫자를 허용 . |은 "또는"을 의미하므로 [5-9]\d 또는 3 자리 이상의 숫자가 표시됩니다. \d[0-9]의 바로 가기입니다.

편집

:001 같은 숫자를 허용하려면

^([5-9]\d|[1-9]\d{2,})$ 

이없는 3 개 이상의 숫자의 경우 제로로 첫 번째 자리를 강제로.

+0

와우, 이것이 완벽합니다! 정말 고맙습니다. – Maxx

+1

설명 주셔서 감사합니다. 나는 정말로 뭔가를 배웠다. +1 – Maxx

+0

@pimvdb :'^'와'$'를 사용하면 전체 문자열이 숫자임을 의미합니다. 이것은 정규식이 필요한 이유를 묻습니다. –

1

이 시도 정규식 (정수만이 사용된다)

[5-9]\d+|\d{3,} 
+0

가까운 숫자이지만 '444'와 같은 숫자가 일치하지 않습니다. – Maxx

+0

업데이트 된 버전이 작동하는 것 같습니다! – Maxx

4

50-99 일치하는 조건 그룹 또는 세 개 이상의 숫자의 문자열 시도 : 나는 게시 좋은 답변이 이미 알고

var r = /^(?:[5-9]\d|\d{3,})$/ 
17

을하지만, 앞에 0을 허용하지 않습니다. 나는 (가능 선두에 제로) 99까지의 숫자 50와 일치

첫째 : 그리고 여기 내 앞에 0을 허용 솔루션입니다 ... 을 덧글을 남길 수있는 충분한 명성을 가지고, 그렇게하지 않는

0*[5-9]\d 

다음 (도 선두에 제로) 위 (100)의 번호와 일치하고 :

0*[1-9]\d{2,} 

이와 함께 추가에 "또는"전체 문장 일치하도록 마무리 :

012,358을

그게 전부 야!

1

Next matches 모든 크거나 같은 11100에 :

^([1-9][1-9][1-9]\d{2}\d*|[1-9][2-9]\d{3}\d*|[2-9]\d{4}\d*|\d{6}\d*)$ 

For greater or equal50 :

^([5-9]\d{1}\d*|\d{3}\d*)$ 

패턴을 확인하고 임의의 숫자로 수정합니다. 또한 많은 수의 반복적 인 forward/backward 연산자를 찾는 것이 좋습니다.

관련 문제