Как вы создаете регулярное выражение, которое соответствует только действительному URI. Описание URI можно найти здесь: http://en.wikipedia.org/wiki/URI_scheme. Ему не нужно извлекать какие-либо детали, просто проверьте, действительно ли URI.
(предпочтительный формат -.Net RegularExpression) (.Net Version 1.1)
- Не стоит проверять известный протокол, только действительный.
Текущее решение:
^([a-zA-Z0-9+.-]+):(//([a-zA-Z0-9-._~!$&'()*+,;=:]*)@)?([a-zA-Z0-9-._~!$&'()*+,;=]+)(:(\\d*))?(/?[a-zA-Z0-9-._~!$&'()*+,;=:/]+)?(\\?[a-zA-Z0-9-._~!$&'()*+,;=:/[email protected]]+)?(#[a-zA-Z0-9-._~!$&'()*+,;=:/[email protected]]+)?$(:(\\d*))?(/?[a-zA-Z0-9-._~!$&'()*+,;=:/]+)?(\?[a-zA-Z0-9-._~!$&'()*+,;=:/[email protected]]+)?(\#[a-zA-Z0-9-._~!$&'()*+,;=:/[email protected]]+)?$