2012-01-06 6 views
0

0-5,000 사이의 값을 넣을 수있는 정규 표현식이 필요합니다. 저는 정규 표현식에 초보자이며 상당히 새로운 사람입니다. ^(0?[0-4]?[0-9]?[0-9]?[0-9])$은 내가 지금까지 가지고 있지만 4,999로만 갈 수있게 해줄 것입니다. 감사합니다Reg Ex 숫자 범위

+5

안녕하세요 환영 유래에 : 당신이 정말로 당신이 할 수 원하는 경우

. 이 정규식에 대해 어떤 프로그래밍 언어를 사용하고 있는지 언급하십시오. – Animesh

+1

당신이 사용하고있는 언어에 관한 어떤 맥락은 확실히 도움이 될 것입니다. 올바른 언어/플랫폼을 사용하고 있다면 실제 수치 값을위한 컨트롤을 사용하고 정규식을 사용하는 대신 컨트롤 자체에 최대/최소값을 설정하여이 문제를 해결할 수 있습니다. – Zannjaminderson

답변

5

문자열의이 부분을 숫자로 구문 분석하고이를 정규식 외부의 5000과 비교하는 이유는 무엇입니까? 정규식을 사용한다면 코드를 읽는 사람이 누구든 몹시 싫어할 것입니다.

1
println '3,1777' ==~ /[0-4]((\,)\d{1,3})?/ 
println '3,999' ==~ /[0-4]((\,)\d{1,3})?/ 

Groovy 용입니다. 여전히 PCRE를 지원하는 모든 언어에서 정규 표현식을 사용할 수 있습니다. =)

2

숫자 범위 유효성 검사에 정규식을 사용하지 마십시오. regex를 사용하여 문자열이 패턴과 일치하는지 확인하십시오 (즉, 숫자만으로 구성됨). 그런 다음 해당 문자열을 숫자로 변환하고 해당 숫자의 유효성을 검사하십시오.

정규 표현식은 황금 망치가 아니며 효과적으로 사용할 수있는 손톱이 너무 많습니다.

0

^(5000|[1-4][0-9]{3}|[1-9][0-9]{2}|[1-9][0-9]|[0-9])$

2

따르 일리아 년 Kogan의 대답.

(5000|[1234]?\d{3})(?!\d) 
관련 문제