Регулярное выражение для URL (http и https)

Используйте /^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/, чтобы проверить, что вся строка является корректным URL (http и https). Каждый пример ниже проверен по этому шаблону, а открыть его можно в Regex Tester с уже загруженными образцами.

Обновлено

/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/
Открыть в Regex Tester
ВводРезультат
https://example.com✓ Совпадение
http://sub.example.co.uk:8080/path?q=1#top✓ Совпадение
https://devpack.app/regex-tester✓ Совпадение
example.com✗ Нет совпадения
ftp://example.com✗ Нет совпадения
https://localhost✗ Нет совпадения
http://exa mple.com✗ Нет совпадения

Как работает шаблон

ЧастьЗначение
^https?Начинается с http, необязательно за которым следует s
:\/\/Литеральные :// (слэши экранированы для регулярных выражений в JavaScript)
[A-Za-z0-9.-]+Имя хоста и поддомены
\.[A-Za-z]{2,}Точка и домен верхнего уровня из двух и более букв
(?::\d{1,5})?Необязательный порт, например :8080
(?:\/[^\s]*)?Необязательный путь, строка запроса и фрагмент — любые символы до пробела
$Конец строки

Примеры кода

JavaScript

const re = /^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'https?://[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:/[^\s]*)?', value))

PHP

preg_match('/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/', $value) === 1;

Примечания и ограничения

Для валидации в JavaScript конструкция new URL(value) внутри try/catch строже и учитывает все пограничные случаи. Используйте регулярное выражение, если дополнительно нужно требовать http(s) и домен, похожий на публичный. Оно намеренно отклоняет localhost и IP-адреса без доменного имени.

Часто задаваемые вопросы

Какое регулярное выражение для URL (http и https)?
/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/ — проверяет всю строку целиком. Что делает каждая часть, см. в таблице выше.
Какие примеры подходят?
Из проверенных примеров подходят: https://example.com, http://sub.example.co.uk:8080/path?q=1#top, https://devpack.app/regex-tester. Остальные не подходят.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и образцы текста загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.