Сделать несколько replace

183
21 апреля 2018, 18:52

Есть строка, например <p:+79993333311@example.com>, где +79993333311 это номер телефона, причем он может быть в разных форматах, предлагаю на этом не зацикливаться... В общем его нужно извлечь, мы знаем что все остальное примерно постоянное, предлагаю следующий код:

    var item = '<p:+79993333311@example.com>'; //может быть 79993333311 или 89993333311 или 9993333311 или еще что то
    let phone = item.replace(/\s+/g,'');
    phone = phone.replace('<sip:','');
    phone = phone.replace('@','');
    phone = phone.replace('example.com','');
    phone = phone.replace('>','');

Мне лично это все очень не нравиться и мне кажется можно сделать проще, и я не об этом:

        let phone = item.replace(/\s+/g,'');
        phone = phone.replace('<sip:','');
        phone = phone.replace('@example.com>','');

Такое решение суть моего вопроса не меняет.
Регулярное выражение на пол экрана то же не вариант.
Как можно решить эту задачу более рационально и красиво, нежели те решения что я предложил?

Answer 1

Ну примерно, так:

var item = '<p:+79993333311@example.com>'; 
console.log(item.replace(/<p:(.+)@.+/,'$1')); // +79993333311

Если не знаем какой тег между < и : (и если вдруг есть пробелы или другие символы) то можно сделать например так:

var item = '< tag :+79993333311@example.com>'; 
console.log(item.replace(/<[^:]+:(.+)@.+/,'$1')); // +79993333311

Answer 2

Напомните, почему нельзя просто найти подстроку по крайним элементам без всяких replace и регулярок?
Думаю, такой способ быстрее и проще.

let phone = '<p:+79993333311@example.com>'
console.log(phone.substr(phone.indexOf(':') + 1, phone.indexOf('@') - 3))
READ ALSO
Конвертация [object File] в array

Конвертация [object File] в array

Как можно преобразовать [object File] в array? На входе имею файл с расширениемhtml и нужно его содержимое внести в массив в любом виде ( весь файл str в один...

201
Здравствуйте помогите пожалуйста input type range

Здравствуйте помогите пожалуйста input type range

Есть два input type range/ При передвигание одного ползунка, срабатывает второй тоесть повторяет такие же движениеК примеру первый ползунок идет...

197
Fake input в react autocomplete

Fake input в react autocomplete

Делаю свой кастомный autocomplete на React, он получает входные данные типа:

192
Добавить виджет weibo на страницу

Добавить виджет weibo на страницу

Может кто сталкивался с такимКак вывести виджет weibo на страницу? У них изменился порядок подключения виджета в 2017 году

177