RFC 1738 , который определяет спецификацию URL, в которой указываются только символы
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+.-
может использоваться в схеме URL, и только символы
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),;/?:@=&
может использоваться незакодированным в определенной части URL-адреса схемы. (;/?:@=&
, если он используется без кодировки, должен использоваться в «зарезервированных целях», но если вы просто проверяете наличие недопустимых символов, вам не нужно об этом беспокоиться). Поэтому, если вы хотите получить полную общность, я бы проверил URL по этому регулярному выражению:
"/([a-zA-Z+.-]+:\/\/)?([a-zA-Z0-9\$\-_\.\+\!\*'\(\),\;\/\?\:\@\=\&]+)/"
(возможно, некоторые из этих побегов не нужны). Если вы ищете только URL-адреса HTTP, (некоторые из них) должны подойти и для других ответов.