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

Как избежать слипшихся ссылок?

Всем привет, у меня есть регулярное выражение, которое валидирует ссылки, если вкратце:

1. Пропускает одиночные ссылки
2. Пропускает несколько ссылок только используя разделитель между ними (точка с запятой и пробел)
3. Не пропускает слипшиеся ссылки (www.example1.comwww.example2.com)
4. Проверяет, что ссылки начинаются с http, https, либо с www

У меня возникла проблема с третьим пунктом:
Регулярка не пропускает слипшиеся ссылки, начинающиеся с http или https, но пропускает ссылки, начинающиеся с www (как в примере в третьем пункте)
Я пытался решить проблему, сделав после домена обязательными либо слеш, либо знак вопроса (на случай query-параметров). Однако сейчас ссылки валидны, если только после домена стоит слеш либо знак вопроса.

Вопрос: Как сделать так, чтобы после домена содержимое могли идти только после слеша или знака вопроса, и при этом учесть, что после домена может ничего не быть и в таком случае ссылка должна быть валидной

Само регулярное выражение:

/^(https?:\/\/|www\.)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}(\/|\?)([\/\w .-]*)?(#[\w-]*)?(\?.*)?(; (https?:\/\/|www\.)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}(\/|\?)([\/\w .-]*)?(#[\w-]*)?(\?.*)?)*$/
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Средний 6 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
vhood
@vhood
Не забывайте отмечать решения
^(?:^https?\:\/\/)?(?:www\.)?[a-z0-9-]+\.[a-z]+(?:[?\/].*)?$

проверка
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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