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*)?
  • Вопрос задан
  • 420 просмотров
Решения вопроса 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);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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