Задать вопрос
alienworkshop
@alienworkshop

Как разбить строку на текст и ссылки?

Есть строка типа:
I have a link\n for you https://google.com.\n\n Also I have this link http://some.net.\n\n\n Some text ftp://test.net, ftps://test-2.de!

Как разбить эту строку на массив из подстрок так, чтобы на выходе ссылки и обычный текст были отдельно?
При этом последовательность текста и ссылок должна сохраниться, типа:
['I have a link\n for you ', 'https://google.com', '\n\n Also I have this link' ]


Я нашёл регулярное выражение, которое может отдельно вытащить ссылки из текста, но разбивает текст так, как описано выше:
(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?
  • Вопрос задан
  • 429 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
@Interface
const str = 'I have a link\n for you https://google.com.\n\n Also I have this link http://some.net.\n\n\n Some text ftp://test.net, ftps://test-2.de!';
// немного изменил RegExp убрав запоминающие скобки
const regExp = /(?:http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?/g;
const textParts = str.split(regExp);
const links = str.match(regExp);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы