2014-01-27 5 views
4

Мне нужно найти шаблон, который ограничивает ввод данных. Что мне нужно, чтобы ограничить вход для:Regex pattern не соответствует строке ввода

Первый символ должен быть «S», Второй символ должен быть «S», «Т», «W», «X» или «V», Следующий 6 должен быть цифры 0 - 9 Последние 2 может быть любой заглавной буквы или любое число 0 - 9

Так мои исследования привели меня поставить это вместе .....

^[S][STWXV]/d{6}[A-Z0-9]{2}$

От чего я читать:

[S] означает буква S только [STWXV] означает любую одну букву из этого списка /d{6} означает 6 цифр [A-Z0-9]{2} означает любые 2 символов A - Z или 0 - 9

Я не нуждаюсь в матче где-нибудь в строке , мне нужна целая строка, чтобы соответствовать этому шаблону.

Так почему же Regex.IsMatch("SX25536101", "^[S][STWXV]/d{6}[A-Z0-9]{2}$") return false?

Ive явно пошло не так где-то, но это моя первая попытка регулярных выражений, и это не имеет никакого смысла :(

+2

Попробуйте найти заголовок, который лучше описывает вашу проблему. Подумайте, что это название будет использоваться в поисковых системах. –

+1

So close: Try \ d вместо/d –

+1

обратная косая черта сбрасывает смешные символы, такие как \ d. Прямая косая черта написана по обе стороны регулярного выражения на многих языках, что означает, что выражение является регулярным выражением. –

ответ

8

Вы должны использовать \d для цифр:

Regex.IsMatch("SX25536101", @"^[S][STWXV]\d{6}[A-Z0-9]{2}$"); // true 

Примечание: Здесь приятно Regular Expressions Cheat Sheet которые могут помочь вам в будущем

+2

Как досадно добираться так близко не пятно, такая глупая ошибка! Благодарю. – FlipTop

-1

Или не использовать \d вообще (предпочтительный и быстрее).

^S[STWXV][0-9]{6}[A-Z0-9]{2}$

См. here или here.

+0

Почему это так? -1 – OGHaza

+1

\ d является сокращением для цифр, и это делает регулярное выражение более кратким. Используй это. –

Смежные вопросы