2013-04-22 2 views
1

사용자 입력 문자열의 숫자 범위는 1300에서 1500입니다. 숫자 범위 1300 ~ 1500에 대한 유효성 검사 입력? (Regex 또는 다른 일반적인 방법을 사용하여)

나는

Regex regxUsrInput = new Regex(@"^(?:[1-9]|1|3[0-9]|0[0-9]|0[0-9]|1500)$");을 시도 ... 그러나 이것은 내가 기대하는 방식의 유효성을 검사하지 않습니다.

대체 방법을 포함한 모든 제안 사항에 대해 열려 있습니다. 감사합니다

: 내 신청서는 Windows Forms 신청서는 C#로 작성되어 있습니다. 사용자 입력은 표준 TextBox 컨트롤에서 가져옵니다.

+17

당신은 정말 이것에 대한 정규식가 필요하십니까? 왜'if (input> = 1300 && input <= 1500)'이 아닌가? – DGibbs

+2

문제를 해결하기 위해 정규식을 사용하고 있습니다. 이제 두 가지 문제가 있습니다. – Jeff

+0

제안 해 주셔서 감사합니다. 하지만 그 입력이 자리수 여야하고 유효 범위를 확인해야합니다. – AbdulAziz

답변

13

Regex을 사용할 예정입니까? 이 간단한 방법은 어떨까요 :

int value; 
if(int.TryParse(yourTexbox.Text, out value)) 
{ 
    if(1300 < value && value < 1500) 
    { 
     //your code 
    } 
} 
+1

나는 실제로 그것을 고려하기보다는 검사를 추가 할 것을 조언한다. 아마도 빠른 정규식 검사일까요? ;) – musefan

+5

나는 여기에서 int.TryParse를 사용하는 것이 강력하게 권장된다. OP가 소수점을 언급하지 않았다는 것을 알고있다. – KingCronus

+0

@HosseinNarimaniRad 이것은 굉장한 정규 표현식입니다. D 잘 했어! – gaussblurinc

7

참고 : 그렇게하지 마십시오. 완성도를 위해 - -

^1([34]\d{2}|500)$ 
+2

이것은 완전히 정확합니다. 이 메서드를 사용하여 절대 유효성을 검사해서는 안됩니다. – Jeff

+0

이 "지금 가지고있는 두 가지 문제"정규식 솔루션이 정확한지는 좋아하지만, 모든 상행위를 얻는 "간단한 tryparse"솔루션은 올바르지 않습니다. – Rawling

+0

정말 고마워. 하지만 왜 내 조건에서 정규식을 사용하지 않는 것이 좋은지 묻고 싶습니다. – AbdulAziz

1

다른 답변이에 대한 정규식을 필요로하지 않는다는 것을 지적하지만, 한 당신이 정말로,이 시도하려는 경우 : 그러나 여기 방법

@"^1([34][0-9][0-9]|500)$" 
4

Regex_For_Range 발전기에 따르면, 당신의 정규식은 다음과 같아야합니다

^1([34][0-9]{2}|500)$

+3

+1 깔끔한 도구입니다. – Rawling