2012-08-08 3 views
0

다음 형식이어야하는 문자열이 있습니다 : XX999900. XX은 십진수가없는 문자 여야하며 그 뒤에 6 자리 숫자가 있어야합니다. C에서 문자열의 형식을 확인해야합니다.

그래서 나는 다음과 같은 방법으로 정규식을 사용하여 생각 :

string sPattern = @"^\\[A-z]{2}\\d{6}$"; 
indexNumber = "ab9999.00"; 
if (Regex.IsMatch(indexNumber, sPattern) 
{ 
    // do whatever 
} 

그것은 실패합니다. 누군가가 무엇이 잘못되었는지 말해 줄 수 있습니까?

+1

유효 입력 및 잘못된 입력에 대해 설명해주십시오. 설명에는''XX999900 ''이 있지만 코드에는' "ab9999.00"'이 있습니다 (소수점을 적어 두십시오). 정규식은 각각 다를 것입니다. – Oded

+0

여기에서 Reg-ex를 확인하십시오. 잘하면 도움이 될 것입니다. http://www.regular-expressions.info/examples.html – KKP

답변

7

나는 [A-z]이 유효한 문자 클래스라고 생각하지 않습니다. @을 사용할 때는 \\이 필요하지 않습니다.

이 시도 : 당신이 . 다음에 숫자 4를 가지고 포맷을해야하는 경우

@"^[a-zA-Z]{2}\d{6}$" 

다음 두 개 더 숫자가,이 시도 :

@"^[a-zA-Z]{2}\d{4}\.\d{2}$" 

(.NET에 대한 \d을 그 주 의 숫자와 일치하는 문자는이므로 일치하도록하려면 [0-9]으로 바꾸십시오.

+0

@Downvoter - 관심이 있으십니까? – Oded

+0

그것은 작동합니다. 대단히 감사합니다. – Dadou

1

길은 너무 많은 이스케이프 문자가 있습니다. 시도해보십시오 :

0

10 진수로 테스트 할 값과 정규식 패턴이 없기 때문에 실패합니다. 게다가, 당신의 정규식 패턴은 전체 문자열을 보게 될 것입니다. 그것은^문자열의 시작 부분에서 시작하고 $는 문자열의 끝 부분을 말합니다. "시작하기"만 원한다면, 패턴 끝에 $를 놓으십시오.

1

A-z은 유효하지 않으며 대소 문자가 혼용되며 연속 6 자리가 없습니다. 당신은 4, 십진수, 그리고 더 2가 있습니다. 시도해보십시오.

^[a-zA-Z]{2}\d{4}.\d{2}$ 
관련 문제