Выражение регулярного выражения для шаблона AA99 - PullRequest
0 голосов
/ 16 декабря 2009

Мне нужна строка регулярного выражения для проверки кода учетной записи. Код состоит из четырех символов, которые должны начинаться с буквы, за которой следует буквенно-цифровое значение, а затем только цифры (т. Е. AC23, D345, CT75)

В настоящее время у меня есть следующее утверждение, которое выдаст ошибку

if (!Regex.Match(iLineItem.Code, @"^[A-Za-z0-9][A-Za-z0-9]*$").Success)
    yield return new RuleViolation("Code has invalid format.", "Code");

Как изменить строку, чтобы не разрешать A99A в качестве кода?

Заранее спасибо!

Ответы [ 4 ]

6 голосов
/ 16 декабря 2009
^[a-zA-Z][a-zA-Z0-9][0-9]{2}$

который состоит из ...

  1. ^ начало строки
  2. [a-zA-Z] только буквенный символ
  3. [a-zA-Z0-9] буквенно-цифровой
  4. [0-9]{2} только две цифры ([0-9] для цифры, {2} для "ровно 2 раза")
  5. $ конец строки
4 голосов
/ 16 декабря 2009

Я думаю, что вам нужно

"^[A-Za-z][A-Za-z0-9][0-9]{2}$"

Основано на вашем описании:

Код состоит из четырех символов, которые должны начинаться с буквы, после которой следует буквенно-цифровой, а затем только цифры ...

^[A-Za-z] дает вам начало строки с одной альфа.

[A-Za-z0-9] дает вам один буквенно-цифровой.

[0-9]{2}$ дает вам две цифры в конце строки.

1 голос
/ 16 декабря 2009

Мой голос за самый лаконичный:

i^[a-z][a-z0-9]\d{2}$

i в начале означает «без учета регистра», поэтому вам не нужно иметь кучу A-Za-z s. Некоторые диалекты делают флаги по-разному, поэтому убедитесь, что вы делаете это правильно.

\d означает «одну цифру». Это так же, как [0-9]. Однако некоторые диалекты не распознают его, поэтому, если у вас его нет, используйте [0-9].

Наконец, некоторые (очень ограниченные) диалекты не принимают {2} (что означает «ровно два раза»). Если у вас нет, вам понадобится \d\d.

Итак, теперь, когда вы увидели самый лаконичный, вот наименее лаконичный (но все равно эквивалентный), который вы должны использовать, только если ваш диалект чрезвычайно ограничен и не распознает ни одного из этих ярлыков:

^[A-Za-z][A-Za-z0-9][0-9][0-9]$

Я определенно предпочитаю первое (более читабельное, ИМХО), но, увы, иногда люди вынуждены работать с такими ограничениями.

1 голос
/ 16 декабря 2009

Вы хотите получить выражение

^[a-z][a-z0-9][0-9][0-9]$

Убедитесь, что вы используете флаг "без учета регистра".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...