Не легко, и вы, возможно, в конечном итоге поймали "слишком много URI", однако как насчет:
((http://|https://)([^/])+)*(/([^\s])*(/))(((\w)*\.[\w]{3,10})|(\w+))?
По сути, у вас там есть пара групп. Об определении протокола. Один ищет каталог, а другой ищет файл в конце. Но! этот подход очень ограничен. Если вам нужна реальная проверка URI и! Разделение (порт, имя пользователя, пароль, отфильтровывать нежелательные символы!) вы, вероятно, получите более сложное выражение. Удачи!
Обновление:
Вы не просили об этом, однако для тех парней из поисковых систем, которые хотят узнать больше о регулярных выражениях, я бы хотел подключить эту бесплатную программу, которую использовал для этой попытки " The Regex Coach " ( Нет, не связан).