Создание регулярного выражения для URL в Java: с/без http://

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для поиска URL-адресов можно воспользоваться следующим регулярным выражением:

JS
Скопировать код
/https?:\/\/\S+\.\S+/g

Данное выражение будет идеально подходить для обнаружения ссылок с протоколами HTTP и HTTPS, игнорируя при этом пробелы и гарантируя наличие домена и домена верхнего уровня (TLD).

Кинга Идем в IT: пошаговый план для смены профессии

Быстрый экскурс в анатомию регулярного выражения

Во внимание предлагается разбор компонентов нашего шаблона:

  • https?: Этот фрагмент ищет «http», причем буква «s» является опциональной, что позволяет поддержать протокол HTTPS.
  • :\/\/: Он следует за протоколом, обязывая присутствовать два слэша.
  • \S+: В одно мгновение исключает пробелы и пропускает цепочку непробельных символов.
  • \.\S+: Запрашивает наличие точки и последующих непробельных символов, что включает в себя TLD.

Увеличиваем разнообразие: учёт различных URL

Чтобы сделать регулярное выражение более толерантным к разнообразию форматов URL, внесем некоторые корректировки:

JS
Скопировать код
/(https?:\/\/)?(www\.)?\S+\.\S+/g

В выражении предусмотрено наличие опционального префикса www и возможность отсутствия протокола.

Учёт путей и параметров запросов

URL могут включать дополнительные элементы, поэтому расширим наше выражение:

JS
Скопировать код
/https?:\/\/(?:www\.)?\S+\.\S+(?:\/[^\s]*)?/gi

Добавлена поддержка путей и строк запросов, что делает шаблон еще более универсальным.

Когда каждый символ имеет значение

Визуализация

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

JS
Скопировать код
const urlRegex = /https?:\/\/\S+/gi; // Раскидываем нашу сеть в виртуальное море

Каждая проверка вылавливает различные данные из текста:

Markdown
Скопировать код
Океан (🌊): [🐠"http://example.com", 🐟"Невалидный текст", 🐡"https://example.org"]

И специализированная сеть (регулярное выражение) успешно справляется с задачей:

Markdown
Скопировать код
🕸️: ["http://example.com", "https://example.org"]

Она эффективно отреагировала на URL, оставив неподходящие строки за пределами.

Продвинутые инструменты для работы с регулярными выражениями профессионального уровня

Поддержка международных URL и символов Unicode

Если требуется работать с международными доменами, воспользуйся этим выражением:

JS
Скопировать код
/(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+/gi

Оно поддерживает протокол ftp и способно продемонстрировать восприятие символов Unicode.

Исключение нежелательных протоколов

Чтобы оградиться от ненужного, используй отрицательный просмотр вперёд:

JS
Скопировать код
/https?:\/\/(?!\S*:\/\/)\S+\.\S+/g

Таким образом, можно избежать попадания URL, содержащих повторяющиеся протоколы.

Ищем только домены

Для извлечения доменных имен подойдет следующее базовое выражение:

JS
Скопировать код
/((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,6}/gi

Оно исключает домены, заметные благодаря старту или концу с дефисом. В таких вопросах важно первое впечатление.

Валидация URL в реальном времени: обратная связь для пользователя

JS
Скопировать код
document.getElementById('urlInput').addEventListener('keyup', function(e) {
  const isValidUrl = urlRegex.test(e.target.value);
  // Обеспечиваем пользователю мгновенную обратную связь
});

Таким образом можно производить мгновенную валидацию URL, даря пользователю быстрый ответ.

Тестирование в условиях реальной среды

Для проверки в условиях боевого стенда регулярных выражений воспользуйся сервисом regex101 и библиотекой validator.js.

Мозговой центр операции

Полезные материалы

  1. Регулярные выражения в JavaScript | MDN — всё, что вам следует знать о регулярных выражениях в JavaScript.
  2. RFC 3986 – Стандартный синтаксис URI — принципы и правила формирования URI.
  3. URI, URL, и URN: Уточнения и рекомендации — правила и рекомендации применения URL.
  4. regex-weburl.js · GitHub — всесторонняя коллекция шаблонов регулярных выражений для URL.
  5. regex101: разработка, тестирование и отладка регулярных выражений — платформа для тестов и экспериментов с регулярными выражениями.
  6. В поисках идеального регулярного выражения для валидации URL — множество экспериментальных подходов к валидации URL.
  7. Схемы URI – Википедия — раздел Википедии, освящающий схемы URI.