Помогите написать паттерн "%s, %s, %i %s"

Парсю простую строку вроде: "Петрозаводск, Заводская, 1953 раз" Пишу регулярку:

let str = "Петрозаводск, Заводская, 1953 раз";
let pattern = /[а-яА-Я 0-9._%+-]+, [а-яА-яZ0-9-]+, [0-9]+ [а-яА-Я]+/igm;
console.dir(str.match(pattern));

Но у меня почему то выдается целая строка. А мне нужно отдельно разбить: "Петрозаводск", "Заводская", "1953", "раз". Не получается, ни через matchAll, никак ( Сейчас написал подобный паттерн:

/([а-яА-яa-zA-z]+\s)+([а-яА-яa-zA-z]+\s)+([а-яА-яa-zA-z]+\s)/igm

Но никак не могу подставить запятую с пробелом. Подскажите пожалуйста


Ответы (1 шт):

Автор решения: vsemozhebuty

Вариант с регуляркой попроще:

let str = "Петрозаводск, Заводская, 1953 раз";

const elements = str.match(/(.+?), (.+?), (\d+) (.+)/);

console.log(elements);

Вариант без регулярок:

let str = "Петрозаводск, Заводская, 1953 раз";

const [city, address, rest] = str.split(', ');
const [number, last] = rest.split(' ');

console.log(city);
console.log(address);
console.log(number);
console.log(last);

→ Ссылка