не все используют http://
Они должны.Без схемы это просто не URL-адрес, и пропуск его может вызвать странные проблемы.Например:
www.example.com:8080/file.txt
Это действительный URL-адрес с несуществующей схемой www.example.com:
.
Если вы уверены, что нормальная схема должна быть http:
, вы можете попробоватьавтоматически добавляя http://
, чтобы «исправить» любой URL, который не начинается с https?:
, перед проверкой.Но вы не должны разрешать / сохранять / возвращать бесхарактерные URL-адреса в течение более длительного срока.
Кстати, текущее регулярное выражение, которое вы используете, далеко от точного согласно официальному синтаксису URI (см. RFC 3986).Это запретит многие допустимые символы URI, не говоря уже о символах Unicode в IRI.Если вы хотите правильную проверку, вы должны использовать настоящий URL-парсер;если вам нужна быстрая проверка на наличие очевидных проблем, вы должны использовать что-то более разрешающее.Например, просто проверяя отсутствие категорически недопустимых символов, таких как пробел и "
.