Если вы пытаетесь сделать это для какого-то реального кода, найдите библиотеку разбора URL для вашего языка и используйте ее. Если вы не хотите его использовать, загляните внутрь, чтобы увидеть, что он делает.
То, что вы называете "ресурсом", называется "схемой". Это задокументировано в RFC 1738 , в котором говорится:
[2.1] ... Обычно URL-адреса записываются следующим образом:
<scheme>:<scheme-specific-part>
URL содержит название используемой схемы (), за которой следует
двоеточием, а затем строкой (<схема-специфическая-часть>), чья
Интерпретация зависит от схемы.
А позже в БНФ
схема = 1 * [lowalpha | цифра | "+" | "-" | "" ]
Итак, если есть схема, вы можете сопоставить ее с:
/^[a-z0-9+.-]+:/i
Если это соответствует, у вас есть то, что синтаксис URL рассматривает как схему, и ваша проверка не пройдена. Если у вас есть строки с номерами портов, например, www.example.com:80, то все становится не так. На практике я не имел дело со схемами с -
или .
, поэтому вы можете добавить помадку реального мира, чтобы обойти это, пока не решите использовать подходящую библиотеку.
Все, кроме этого, например, проверка существующих и доступных доменов и т. Д., Лучше оставить библиотеке, которая уже все поняла.