Соответствующая часть регулярного выражения для адресов - PullRequest
0 голосов
/ 14 декабря 2018

Я пишу валидатор формы с пользовательским шаблоном.Вот регулярное выражение ^d+s[A-z]+s?[A-z]*$

То, что я хотел бы сделать, это соответствие 123 Main Street ИЛИ 123 Main street #23

Важными элементами для успешной проверки должны быть 1) Как минимум 1 число вначало 2) пробел после числа / цифр 3) Как минимум 1 буквенный символ, представляющий название улицы.

Если после этого есть что-то, цифры, специальные символы и т. Д., Мне все еще нужно подтвердить это как истинное.Например, оба из них должны успешно пройти проверку.123 Main street #23 NW или 123 Main street NW #23

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Я бы сделал это так:

^\d+\s*[0-9a-zA-Z]+\s*[a-zA-Z\.]+(?:\s*[#0-9a-zA-Z]+(?:\s*[#0-9a-zA-Z]+)?)?$

Я включил возможность чисел в первой части, потому что я помню, что жил на улице с именем 11th street, и я добавил возможность точекдля второй части адреса для использования ярлыков Street -> St..

Демо: https://regex101.com/r/N683Xq/3/

Вот несколько быстрых деталей:

  • [0-9A-Za-z] использовались для включения любых цифр или букв.
  • (?: ) Это группа без захвата.
  • ()? Добавление знака вопроса после (), чтобы сделать их необязательными.
0 голосов
/ 14 декабря 2018

Вы можете использовать это

^\d+\s+(?=.*[a-zA-Z]).*$

Объяснение

  • ^ - Начало строки.
  • \d+ - соответствует одному или нескольким числам.
  • \s+ - соответствует одному или нескольким пробелам.
  • (?=.*[a-zA-Z]) - соответствует алфавиту (условие для принудительного использования хотя бы одного алфавита)
  • .* - Совпадает с чем угодно, кроме перевода строки.
  • $ - Конец строки.

Демонстрация

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