извлечь из массива и присвоить в переменные JavaScript
Дана строка:
str = ' +1-921-512-2222 <Wilfrid Stevens> Wild Street AA-67209'
необходимо извлечь данные в такие переменные: name, phone, address. Порядок следования данных в строке смешанный, но всегда имя - в угловых скобках, номер - это группы цифр с разделителем "-", иногда первый символ в такой подстроке начинается с '+' и оставшиеся подстроки - это адрес.
Преобразуя str.split(' ') получаю [' ', '+1-921-512-2222', '<Wilfrid', 'Stevens>', 'Wild', 'Street', 'AA-67209'].
Пытаюсь вытянуть через регулярные выражения нужные подстроки:
let [
name = temp.search(/[<>]/g),
phone = temp.search(/[+-]/g),
...address
] = temp
но, требуемого результата не получаю. Нужно ли преобразовывать строку в массив и как в этом случае быть с подстрокой, содержащей имя
<John Smith>
эта подстрока разбивается на два элемента...
Корректны ли регулярные выражения для извлечения требуемых значений?
Какой наиболее оптимальный алгоритм решения.
Ответы (1 шт):
Не факт, что канонический вариант в плане регулярок - просто удовлетворяет озвученные условия.
str = ' +1-921-512-2222 <Wilfrid Stevens> Wild Street AA-67209';
let nameArr = str.match(/<(\D+)>/);
let phone = str.match(/\+?\d+[\-,\d]+/)[0];
let address = str.replace(nameArr[0], '').replace(phone,'').trim();
let name = nameArr[1];
console.log([name, phone, address]);