Как работает шаблон
| Часть | Значение |
|---|---|
^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 falsePython
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-адреса без доменного имени.
Тестер регулярных выражений
Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.