Проверка регулярных выражений (тест) в JavaScript - PullRequest
0 голосов
/ 20 апреля 2009

Казалось бы, вопросы с регулярными выражениями являются общими, поскольку каждый вопрос, похоже, относится к конкретному случаю. С учетом сказанного, вот мой конкретный случай ...

Мне нужно проверить, что идентификатор сотрудника имеет один из двух определенных форматов. Первый формат (и тот, который у меня работает надежно): (без кавычек): «A000000», где «A» может быть любым символом алфавита, а «0» может быть любым числом от 0 до 9. Другое требование это означает, что требуются только первые две позиции идентификатора сотрудника, что означает, что пользователь может ввести «A0», и он будет проверен (этот идентификатор сотрудника используется в LIKE - ... SID LIKE оператора SQL «A0%» Опять же, это у меня с помощью ...

[A-Z]{1}\d{1,6}

Второй формат вызывает у меня проблемы. То же самое требование выполняется выше, где требуются только первые две позиции входной строки, все остальное не является обязательным, но если оно введено, оно должно соответствовать указанному формату. Формат (без кавычек): «000000A». Часть, с которой у меня возникают проблемы, заключается в том, чтобы убедиться, что если введено более двух цифр, что следующие три-шесть введенных значений являются цифрами, а если введено последнее значение, то это должен быть символ. Таким образом, допустимые входные данные могут быть ...

«00» или «000», или «0000», или «00000», или «000000», или «000000A», но НЕ «0», «0A», «00A», «000A» и т. Д., Или « 0000000" . Вот что у меня есть для этого формата ...

\d{2}(\d{1,4})?[A-Z]{0,1}

Проблема в том, что это позволяет вводить буквенные символы в любом месте с позиций с 3 по 6. Он не допустит никаких буквенных символов в первых двух позициях (хорошо) и не допустит числовых символов в седьмой (последней) позиции (хорошо). Это только те необязательные символы с третьего по шестой, допускающие буквенные символы, которые вызывают у меня горе.

Я надеюсь, что этой информации достаточно (или, возможно, не слишком много). Любая помощь будет принята с благодарностью. Спасибо !!!

Ответы [ 2 ]

2 голосов
/ 20 апреля 2009

Попробуйте это выражение:

(\d{2,5}|\d{6}[A-Z]?)

Это соответствует от 2 до 5 цифр (\d{2,5}) или шести цифрам и дополнительной букве (\d{6}[A-Z]?). А если вы хотите точное совпадение, используйте якоря ^ и $, чтобы отметить начало и конец:

^(\d{2,5}|\d{6}[A-Z]?)$
0 голосов
/ 20 апреля 2009

Для первого {1} является избыточным:

[A-Z] [0-9] {1,6}

Для 2-го, может быть, это:

\ d {2} \ d {0,1} \ d {0,1} \ d {0,1} \ d {0,1} [A-Z] {0,1}

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