Otrzymuję "Zła wartość kompilacji" na tym oświadczeniu.Zła kompilacja stała wartość
Regex objCheckNumber = new Regex("^(\d){4}$");
Po prostu chcę ustawić, aby sprawdzić inny ciąg, aby sprawdzić, czy wprowadzona wartość ma 4 cyfry.
Otrzymuję "Zła wartość kompilacji" na tym oświadczeniu.Zła kompilacja stała wartość
Regex objCheckNumber = new Regex("^(\d){4}$");
Po prostu chcę ustawić, aby sprawdzić inny ciąg, aby sprawdzić, czy wprowadzona wartość ma 4 cyfry.
C# próbuje interpretować \d
jak sekwencja ucieczki, a \d
jest nie prawidłową sekwencję ucieczki (ale \n
i \t
są , na przykład). Możesz podwoić ukośniki odwrotne, aby się z niego wydostać ("^(\\d){4}$"
), lub możesz poprzedzić stały ciąg znakiem at: @"^(\d){4}$"
.
C# używa \ jako znak ucieczki. Musisz podwoić wartość \
na \\
.
Alternatywnie, umieścić znak @ przed cudzysłów:
new Regex(@"^(\d){4}$")
\ escute the d, co oznacza pojedynczy znak numeryczny. Z {4} szuka czterech z nich z rzędu. –
@pasasik - tak, \ d ma specjalne znaczenie dla silnika regex, ale najpierw musisz pobrać ten ciąg do silnika regex. Bez podwojenia go lub użycia @ kompilator C# uważa, że masz na myśli \ d jako "specjalny" znak (np. \ T lub \ n) i próbuje (i nie powiedzie się), aby sobie z tym poradzić. –
Testuję w RegexHero: http://regexhero.net/tester/ i ... jeesh. widzę mój błąd. (Przepraszam za downlight binarycoder, SO nie pozwolił mi tego odwrócić ...) –
-1: \ d = pojedyncza cyfra w C#/.NET regex –
dzięki, całkowicie przeoczyłem to prawdopodobnie dlatego, że myślałem za dużo o regex i jest to ciąg duh. – PositiveGuy
whoops, nie zamierzałem komentować psasików. – PositiveGuy