Проверка правильности регулярного выражения для URL в ASP.net - PullRequest
1 голос
/ 23 июля 2011

([\ w -] +.) + [\ W -] + (/ [\ w- ./?%&=]*)? Я использую приведенное выше выражение для проверки URL. Но проблема в том, что когда я даю только «www.yahoo» и нажимаю кнопку «Сохранить», я не получаю никакого сообщения об ошибке. Пожалуйста, предложите решение.

Спасибо

1 Ответ

3 голосов
/ 23 июля 2011

Ну, я думаю, что этот пост больше относится к питону. Вы также можете найти что-то похожее в ASP.NET.

Но если вы хотите разобрать его самостоятельно, вам следует обратиться к RFC 2396 (универсальный синтаксис URI) , который предоставляет регулярное выражение и разбивает его на компоненты в Приложении B:

  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
   12            3  4          5       6  7        8 9

Цифры во второй строке приведены только для справки. читаемость; они указывают ориентиры для каждого подвыражение (то есть каждая парная скобка). Мы ссылаемся на значение для подвыражения соответствует $. Например, соответствие вышеприведенное выражение для

  http://www.ics.uci.edu/pub/ietf/uri/#Related

приводит к следующим совпадениям подвыражения:

  $1 = http:
  $2 = http
  $3 = //www.ics.uci.edu
  $4 = www.ics.uci.edu
  $5 = /pub/ietf/uri/
  $6 = <undefined>
  $7 = <undefined>
  $8 = #Related
  $9 = Related

где указывает, что компонент отсутствует, так как это случай для компонента запроса в приведенном выше примере. Таким образом, мы можем определить стоимость четырех компонентов и фрагмент как

  scheme    = $2
  authority = $4
  path      = $5
  query     = $7
  fragment  = $9

и, двигаясь в обратном направлении, мы можем воссоздать ссылку на URI из его компонентов с использованием алгоритма в шаге 7 раздела 5.2.

EDIT

После небольшого поиска в Google я нашел это в ASP.NET: System.Uri, например ::

Uri uri = new Uri("http://www.ics.uci.edu/pub/ietf/uri/#Related");
Console.WriteLine(uri.AbsoluteUri);
Console.WriteLine(uri.Host);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...