Регулярное выражение Javascript: соответствует адресу (номер + название улицы)

1

Я хотел бы использовать регулярное выражение в Javascript для соответствия строке, содержащей номер в 1-й позиции, а затем название улицы, например:

54 улица Сен-Луис

var res =/[0-9]\s[AZ]\s[AZ-]/.test("8 street Saint-Louis"); выражение, которое я пробовал, выглядит так: var res =/[0-9]\s[AZ]\s[AZ-]/.test("8 street Saint-Louis");

Но он возвращает false...

Любая идея?

Теги:

1 ответ

1
Лучший ответ

вопросы:

[AZ]: он будет соответствовать только одному алфавиту, поэтому используйте либо * или +

ваш пример case включает строчные буквы, но ваше регулярное выражение только ищет прописные буквы, поэтому используйте [a-zA-Z]

поэтому используйте ^\d+\s[a-zA-Z]+(\s[a-zA-Z-]*)?$

^\d+: начинается с одной или нескольких цифр

\s[a-zA-Z]+: пробел, затем один или несколько алфавитов

(\s[a-zA-Z-]*)? : ? нуль или одно совпадение, пробел и ноль или более алфавитов и -, $ конец конца строки

Demo

console.log(/^\d+\s[a-zA-Z]+(\s[a-zA-Z-]*)?$/.test('8 street Saint-Louis')); 
console.log(/^\d+\s[a-zA-Z]+(\s[a-zA-Z-]*)?$/.test('8 street')); 
console.log(/^\d+\s[a-zA-Z]+(\s[a-zA-Z-]*)?$/.test('8748 street Saint-Louis')); 
//-----------------------------------------------------------

console.log(/^\d{1,3}\s[a-zA-Z]+(\s[a-zA-Z-]*)?$/.test('8748 street Saint-Louis')); 
  • 1
    Чтобы прояснить ваш комментарий «и - в конце» - дефис в середине шаблона означает диапазон, az - это «от a до z». В конце это означает, что сам дефис должен быть частью сопоставляемых символов.
  • 0
    @JamesCurran спасибо, чтобы добавить ясности, я хотел бы упомянуть $ , сказав в конце :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню