Еще один вопрос регулярного выражения префикса URL (будет использоваться в C #) - PullRequest
3 голосов
/ 06 мая 2010

Я видел много регулярных выражений для валидации URL. В моем случае я хочу, чтобы URL был проще, поэтому регулярное выражение должно быть более тесным:

Действительный URL префиксы выглядят так:

  • HTTP [s]: [. WWW] [?] // addressOrIp [.something] /PageName.aspx

Это описание префикса. Я добавлю ?x=a&y=b&z=c позже. Я просто хочу проверить, является ли веб-страница активной, прежде чем получить к ней доступ, но даже до этого я хочу убедиться, что она правильно настроена. Я хочу по-разному относиться к условиям bad url и host is down, хотя в случае сомнений я бы предпочел дать сообщение host is down, потому что в любом случае это окончательный тест. Надеюсь, это имеет смысл. Я думаю, что я пытаюсь сказать - регулярное выражение не должно быть слишком агрессивным, я просто хочу, чтобы оно охватывало, скажем, 95% случаев.

Это ориентировано на C #, поэтому расширения регулярных выражений Perl мне не помогут; давайте придерживаться наименьшего общего знаменателя.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 06 мая 2010

Вы должны использовать класс Uri:

Uri uri;

if (!Uri.TryCreate(str, UriKind.Absolute, out uri))
    //Bad bad bad!!!
if (uri.Scheme != "http" && uri.Scheme != "https")
    //Bad bad bad!!!
if (uri.Host.IndexOf('.') <0)
    //Bad bad bad!!!
1 голос
/ 06 мая 2010

Используйте System.Uri вместо.

Тогда вы сможете работать с такими частями вашего URL, как Хост , Схема , PathAndQuery и т. Д., И проверить необходимые условия.

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