Я пытаюсь сопоставить уличные адреса, содержащие улицу и номер.
Мне нужно выражение, чтобы соответствовать словам для названия улицы, а затем номер.
Например, я хочу совместить «somestreet 25», «другую улицу 23», «третью улицу 190», но не «a_fourth street 67».
Я пытаюсь с ним в течение часа, но я не очень хорошо разбираюсь в регулярных выражениях.
Пока что у меня есть /^[a-zA-Z]+([\s][a-zA-Z]+)([\s][0-9]){1,4}$/
но, разумеется, он не работает.
— РЕДАКТИРОВАТЬ —
Я понимаю, что нет стандартного глобального способа написания уличного адреса, и что регулярные выражения не могут быть достаточно сложными, чтобы покрыть проблему в глобальном масштабе, но сайт предназначен для местного ресторана, и все, что я хочу, это адрес, чтобы он выглядел как адрес (даже тогда, без проверки карты и телефона, он все равно может быть поддельным).
Тем не менее, все будет проверяться человеком до того, как все будет отправлено, а также это довольно небольшой район, поэтому и человек доставки, и владелец ресторана знают, является ли заказ поддельным или нет.
Все, что я хочу, это не дать им получить спам с глупыми символами @ # $ в адресе и иметь для них достойное чтение для форматирования адресов.
Это должно работать на ваших примерах:
/^[a-zA-Z]([a-zA-Z-]+\s)+\d{1,4}$/
Вы немного усложнили его. Это нечувствительное к регистру выражение, которое ищет буквы с дефисами и пробелами, а затем цифры, соответствующие вашим заявленным критериям.
/^([az- ]+)\s+([0-9]+)$/i
Но как насчет меня? Я живу на 30th Ave.
Кстати, я использовал [0-9]+
для одного или нескольких номеров в конце, а не для вашего диапазона {1,4}
. Если вы не должны иметь больше 4, переключите его обратно в диапазон {1,4}
.
Это будет
/^([AZ][-AZ ]+)\s+(\d+)$/i
Я думаю, что названия улиц не имеют регулярного образования. Так что регулярное выражение не применимо для этого