Как проверить полный и действительный URL-адрес с помощью Regex - PullRequest
0 голосов
/ 14 сентября 2010

У меня есть метод проверки URL, который работает довольно хорошо, за исключением того, что этот URL-адрес проходит: "http://". Я хотел бы убедиться, что пользователь ввел полный URL-адрес, например:" http://www.stackoverflow.com".

Вотшаблон, который я сейчас использую:

"^(https?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //user@ 
+ @"(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP- 199.194.52.184 
+ "|" // allows either IP or domain 
+ @"([0-9a-z_!~*'()-]+\.)*" // tertiary domain(s)- www. 
+ @"([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // second level domain 
+ "[a-z]{2,6})" // first level domain- .com or .museum 
+ "(:[0-9]{1,4})?" // port number- :80 
+ "((/?)|" // a slash isn't required if there is no file name 
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"

Любая помощь, чтобы изменить вышеупомянутые, чтобы убедиться, что пользователь вводит полный и действительный URL будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 14 сентября 2010

Почему бы не использовать библиотеку urlparsing? Позвольте мне перечислить некоторые существующие библиотеки анализа URL для языков:

Спросите, не хватает ли мне языка.

Таким образом, вы можете сначала проанализировать URI, а затем проверить, что он соответствует вашим собственным правилам проверки. Вот пример на Python:

url = urlparse.urlparse(user_url)
if not (url.scheme and url.path):
    raise ValueError("User did not enter a correct url!")

Поскольку вы сказали, что используете C # на asp.net, вот пример (извините, мои знания по c # ограничены):

user_url = "http://myUrl/foo/bar";
Uri uri = new Uri(user_url);
if (uri.Scheme == Uri.UriSchemeHttp && Uri.IsWellFormedUriString(user_url, UriKind.RelativeOrAbsolute)) {
    Console.WriteLine("I have a valid URL!");
}
0 голосов
/ 17 июня 2014

Я использую это регулярное выражение. У меня отлично работает.

/ ((([A-Za-Z] {3,9}: (: //)) (?:? [-;: & = + \ $, \ ш] + @) [А? -Za-z0-9 .-] + | (: WWW | [-;:. & = + \ $ \ ш] + @) [A-Za-z0-9 .-] +) ((?: /[+~%/.\w-]*)?\??(?:[-+=&;%@.\w])#?(?:[\w ] ?))) /

0 голосов
/ 14 сентября 2010

Это в значительной степени часто задаваемые вопросы.Вы можете просто попробовать поиск по [regex] +validate +url или просто посмотреть на этот ответ: Какое регулярное выражение лучше всего проверить, является ли строка действительным URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...