Регулярное выражение для названия города и улицы - PullRequest
1 голос
/ 28 мая 2020

Привет, я ищу 2 регулярных выражения, которые описывают:

1) допустимое название улицы

2) допустимое название города

Допустимые названия улиц:

  • Mainstreet.
  • Mainstreet
  • Main Street
  • Big New mainstreet
  • Mainstreet-New
  • Mains Str.
  • ул. Alexander Street
  • abcÜüßäÄöÖàâäèééëîï ôœùûüÿçÀÂ-ÄÈÉÊËÎÏÔŒÙÛÜŸÇ.
  • John Kennedy Street

Недопустимые названия улиц:

  • Mainstreet # +;: _ * ´`? =) (/ &% $ §!
  • Mainstreet # +;: _ * ´`? =) (/ &% $ §!
  • Mainstreet 2
  • Mainstreet ..
  • Mainstreet§

Допустимые города:

  • Edinôœùûüÿ
  • Берлин.
  • Санкт-Петербург
  • Нью-Берлин
  • Aue-Bad Schlema
  • Франкфурт-на-Майне
  • Nürnberg
  • Ab
  • New York CityßäÄöÖàâäèééëîïôœùûüÿçÀÂ-ÄÈÉÊËÎÏÔŒÙÛÜŸ

Недопустимые города:

  • Edingburgh 123
  • Эдингбург 123
  • Сент-Эндрюс 12
  • Берлин, # +;: _ * ´`? =) (/ &% $ §!
  • Берлин __

Решения, которые у меня есть на данный момент, очень близки, но не идеально:

Для города и названия улицы:

^[^\W\d_]+(?:[-\s][^\W\d_]+)*[.]?$

Несчастливый ely не подходит для этих примеров (остальные работают нормально):

  • St. Александровская улица
  • ул. Петербург

Если у вас есть более простые решения, я с удовольствием узнаю что-нибудь. новый! : -)

1 Ответ

2 голосов
/ 28 мая 2020

Чтобы он соответствовал St. Alexander Street и St. Petersburg, вам просто нужно добавить необязательную точку после шаблонов сопоставления букв:

^[^\W\d_]+\.?(?:[-\s][^\W\d_]+\.?)*$
#         ^^^                 ^^^

См. Демонстрацию регулярного выражения .

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

^[^\W\d_]+\.?(?:[-\s'’][^\W\d_]+\.?)*$

См. Демонстрацию регулярного выражения .

...