Регулярное выражение для ввода кода карты - PullRequest
3 голосов
/ 10 апреля 2010

Как я могу написать регулярное выражение для сопоставления строк, следуя этим правилам?

  • 1 буква, за которой следуют 4 буквы или цифры, затем
  • 5 букв или цифр, затем
  • 3 буквы или цифры, за которыми следуют цифра и один из следующих знаков:! & @?

Мне нужно разрешить ввод в виде 15-символьной строки или 3 групп по 5 символов, разделенных одним пробелом.

Я реализую это в JavaScript.

Ответы [ 4 ]

5 голосов
/ 11 апреля 2010

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

  • Используйте классы персонажей. [A-Z] соответствует всем заглавным буквам. [a-z] соответствует всем строчным буквам. [0-9] соответствует числам. Вы можете комбинировать их так: [A-Za-z0-9].
  • Используйте квантификаторы, такие как {n}, поэтому [A-Z]{3} дает 3 заглавные буквы.
  • Вы можете поместить других персонажей в классы персонажей. Допустим, вы хотите сопоставить% или @ или #, вы можете сделать [%@#], который будет соответствовать любому из этих символов.
  • Некоторые метасимволы (символы, имеющие особое значение в контексте регулярных выражений) необходимо экранировать следующим образом: \$ (поскольку $ соответствует концу строки)
  • ^ и $ соответствуют началу и концу строки соответственно.
  • \s соответствует пробелам, но если вы дезинфицируете свой ввод, вам не нужно его использовать.
  • Флаги после регулярного выражения делают особые вещи. Например, в /[a-z]/i, i игнорирует регистр.
1 голос
/ 11 апреля 2010

Я бы начал с учебника .

Обратите внимание на квантификаторы (например, {N}) и классы символов (например, [a-zA-Z])

1 голос
/ 11 апреля 2010

Это должно быть так:

/^[a-z][a-z0-9]{4} ?[a-z0-9]{5} ?[a-z0-9]{3}[0-9][!&@?]$/i

Не стесняйтесь менять 0-9 и [0-9] на \d, если считаете нужным.
Регулярное выражение достаточно просто и достаточно читабельно. ^ и $ убедитесь, что это полное совпадение, чтобы не было лишних символов до или после кода, а флаг /i допускает использование букв верхнего и нижнего регистра.

0 голосов
/ 11 апреля 2010
^[a-zA-Z][a-zA-Z0-9]{4} ?[a-zA-Z0-9]{5} ?[a-zA-Z0-9]{3}[\!\&\@\?]$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...