2010-04-10 2 views
3

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

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

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

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

ответ

1

Это должно быть это:

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

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

+5

Я хотел бы у меня был кто-то, чтобы сделать все мое домашнее задание тоже ... – Stephen

+3

Спецификация это только позволяет 15 или 17 символов; ваше регулярное выражение также позволит использовать 16 символов. – Gumbo

+0

@ Stephen - Мне жаль, что у меня не было домашней работы. –

1

Я бы начал с tutorial.

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

5

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

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

Непонятно, что это домашнее задание, это был просто какой-то трюк vandal. – 2010-04-11 00:52:19

+0

@Roger: даже если это не домашнее задание * per se * OP явно находит себя * учащимся * регулярными выражениями и получит больше от педагогического ответа, чем готовый ответ. Или, по крайней мере, это мое мнение. – dmckee

+0

@ dmckee: Я не предлагаю, чтобы педагогический ответ не предоставлялся; как и для вопросов, не связанных с домашним заданием, объясняя, почему всегда ценнее. Но ответы по строкам «вы не заслуживаете полного ответа, вот некоторые намеки», мягко оскорбительны (в лучшем случае). – 2010-04-11 02:42:00

0
^[a-zA-Z][a-zA-Z0-9]{4} ?[a-zA-Z0-9]{5} ?[a-zA-Z0-9]{3}[\!\&\@\?]$ 
+2

Вам не нужно избегать этих символов внутри класса символов; '[! & @?]' достаточно. – Gumbo

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