2009-10-13 7 views
39

이 문에는 "잘못된 컴파일 상수 값"이 표시됩니다.잘못된 컴파일 상수 값

Regex objCheckNumber = new Regex("^(\d){4}$"); 

입력 한 값이 4 자리인지 확인하기 위해 다른 문자열을 확인하기 만하면됩니다.

답변

70

C 번호는 이스케이프 시퀀스로 \d를 해석하려고하고 \d하지 유효한 이스케이프 시퀀스 (그러나 \n\t입니다 :

또는 큰 따옴표 앞에 @ 문자를 배치 예를 들어,). 백 슬래시를 두 번 사용하여 이스케이프 처리하거나 ("^(\\d){4}$") 상수 문자열 앞에 at-sign : @"^(\d){4}$"을 붙일 수 있습니다.

+1

-1 : \ d = C# /. NET 정규식 –

+0

에서 \ d = 단일 숫자로 된 덕분에 완전히 간과 한 것 같습니다. 정규 표현식은 문자열입니다. – PositiveGuy

+0

똥구멍은 psasiks 코멘트를 의미하지 않았다. – PositiveGuy

8

C#은 \를 이스케이프 문자로 사용합니다. \ ~ \\을 두 배로 늘려야합니다.

new Regex(@"^(\d){4}$") 
+0

\는 단일 숫자 문자를 의미하는 d를 이스케이프합니다. {4}로 그는 연속으로 4 명을 찾고 있습니다. –

+2

@pasasik - 예, \ d는 정규식 엔진에 특별한 의미가 있지만, 먼저 정규식 엔진에 해당 문자열을 가져와야합니다. 그것을 두 배로 사용하거나 @를 사용하지 않고 C# 컴파일러는 \ d를 \ t 또는 \ n과 같은 '특수'문자로 간주하고 처리하도록 시도합니다. –

+0

RegexHero에서 테스트 중입니다 : http://regexhero.net/tester/ and ... jeesh. 나는 내 실수를 본다. (downvote binarycoder에 대해 유감스럽게도 반전을 허용하지 않을 것입니다.) –

관련 문제