Регулярное выражение, которое соответствует 25 символам и начинается с цифр - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть текстовое поле, которое мне нужно проверить с помощью регулярных выражений.Мое требование следующее:

CCCCNNNNNN или CCCCNNNNNNN (шаблон)

1234ABCDEFG или 123-ABCDEFG (пример строки)

Правила:

  • Максимальная длина строки - 25 символов
  • Первые четыре символа (CCCC) должны быть буквенно-цифровыми
  • CCCC состоит из 4 символов и может состоять из цифрили число
  • CCCC может иметь знак тире как 4-й символ
  • NNNNNNNNNNNNN может содержать до 21 символа и только цифры

Например AAAA 1234 A58- является допустимой строкой для CCCC.

Вот мои исследовательские заметки:

  • Сначала мне нужно будет сопоставить цифры
  • Мне понадобится +char для указания соответствия этому шаблону X раз
  • После этого мне нужно будет сопоставить буквы для 8-9 пробелов

Здесь есть замечательный пост по шаблонам RegEx:

Сопоставление чисел с регулярными выражениями - только цифры и запятые

Моя цель - применить этот шаблон REGEX кМаска текстового поля в приложении WinForms.

1 Ответ

3 голосов
/ 19 ноября 2011

....

....

... да - я думаю, что вы ищете ответ (и я подчеркиваю) думаю ") это выражение:

^[0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}$

, вот:

^               # assert beginning (not in the middle)
[0-9A-Za-z]{3}  # three characters that are: 0-9 or a-z (upper or lower)
[0-9A-Za-z-]    # one character that is: 0-9 or a-z (upper or lower) or a dash
\d{0,21}        # anywhere from 0 to 21 digits
$               # assert at the end (not somewhere in the middle

Если вы хотите сопоставить несколько случаев этого выражения, поместите вышеприведенное выражение (минус утверждения)в парантезы (()) вместе со всем, что разрешено для разделения этих значений - я выбрал \s или «пробел»), а затем использую квантификатор +:

^([0-9A-Za-z]{3}[0-9A-Za-z-]\d{0,21}\s+)+$

будет сопоставлять / проверятьследующий ввод:

1234567890 AAAA123456789012345678901 GGG-123       hhh5   A1B2000000000

Если вы хотели что-то еще, вам придется задать более четкий вопрос (в вашем вопросе много противоречий и повторений, что делает его крайне запутанным)

...