Подтвердить что ты не робот

Какое регулярное выражение допускает только прописные/строчные (алфавитные символы), периоды, пробелы и тире?

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

Это нормально:

Dr. Marshall
sam smith
.george con-stanza .great
peter.
josh_stinson
smith _.gorne

Все, что содержит другие символы, не в порядке. Это числа или любые другие символы.

4b9b3361

Ответ 1

Регулярное выражение, которое вы ищете, ^[A-Za-z.\s_-]+$

  • ^ утверждает, что регулярное выражение должно совпадать в начале объекта
  • [] является символьным классом - допускается любой символ, который соответствует внутри этого выражения.
  • A-Z позволяет диапазон символов верхнего регистра
  • A-Z позволяет использовать ряд строчных символов
  • . соответствует периоду а не диапазон символов
  • \s соответствует пробелу (пробелы и вкладки)
  • _ соответствует подчеркиванию
  • - соответствует тире (дефис); мы имеем его как последний символ в классе символов, поэтому он не интерпретируется как часть диапазона символов. Мы также могли бы избежать этого (\-) и поместить его в любом месте класса символов, но это менее ясное
  • + утверждает, что предыдущее выражение (в нашем случае, класс символов) должно совпадать один или несколько раз
  • $ Наконец, это утверждает, что мы сейчас находимся в конце темы

Когда вы тестируете регулярные выражения, вы, вероятно, найдете полезный инструмент, например regexpal. Это позволяет вам видеть соответствие вашего регулярного выражения (или не совпадать) с вашими данными образца в реальном времени, когда вы его пишете.

Ответ 2

Ознакомьтесь с основами регулярных выражений в учебнике. Для этого требуется два anchors и repeat класс символов:

^[a-zA-Z ._-]*$

Если вы используете модификатор без учета регистра, вы можете сократить его до

^[a-z ._-]*$

Обратите внимание, что пространство значимо (это просто символ, как любой другой).