Проверьте полное доменное имя в C # с помощью регулярных выражений - PullRequest
1 голос
/ 06 февраля 2011

Я написал следующий шаблон в C # для проверки полного доменного имени, полученного от пользователя:

(`?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\.?)+(?:[0-9a-zA-Z]{1,})$)

Я хочу разрешить пользователю вводить следующее полное доменное имя:

<name>.<letter><digit>

, напримеркак "aa.a1".Для «aa.a1» мое регулярное выражение обнаруживает полное доменное имя как недействительное, а для «aa.1a» оно определяет его как допустимое.Кто-нибудь знает почему?

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

Вместо использования RegEx вы можете загрузить строку в Uri и использовать различные методы и свойства, чтобы определить, является ли она полным доменным именем.

Uri uri = new Undri(myFQDN);
string host = uri.Host;
bool isAbsolute = uri.IsAbsoluteUri;
2 голосов
/ 06 февраля 2011

Я не собираюсь даже пытаться декодировать это огромное регулярное выражение, вместо этого используйте метод Uri.IsWellFormedUriString . Это уже делает то, что вы ищете.

...