Проблема в том, что ваше регулярное выражение
http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
ожидает, что URL начинается с http://
или https://
.Кроме того, тире внутри класса персонажа неуместна.
Редактировать: Теперь, когда вы опубликовали свои правила, я предлагаю следующее:
^\s*((?:https?://)?(?:[\w-]+\.)+[\w-]+)(/[\w ./?%&=-]*)?\s*$
После успешного совпадения группа 1 будет содержатьдомен и группа 2 будут содержать путь к файлу, если он есть.