2014-01-10 4 views
1

В моем классе «ServiceEditModel» у меня есть свойство Url с typeof Uri. Для проверки я ищу регулярное выражение, проверяющее, действительно ли Url, заполненный на моей странице «Редактировать».
регулярное выражение должно проверитьRegex for Url Check

  1. Есть HTTP: // или https: //
  2. Это тело содержит только символы алфавита и цифры
  3. И концовка, как, например, .com,. сеть, .ch
  4. должно быть возможно, что есть еще один параметр за окончание, как, например https://stackoverflow.com/questions

Мой код где Regex приходит взгляд Лик е это:

[Required(ErrorMessageResourceType = typeof(Resources.ApplicationTemplate), ErrorMessageResourceName = "UrlRequired")] 
[RegularExpression("REGEX COMES HERE", ErrorMessageResourceType = typeof(Resources.ApplicationTemplate), ErrorMessageResourceName = "InvalidUrl")] 
public Uri Url { get; set; } 

я уже искал Regex, но не может найти правильный, потому что это на самом деле моя первая experiance с Regex.

Спасибо за помощь!

EDIT

Я обновил свой регулярное выражение, так что это также позволяет URL, с символом "-", такие как http://www.comsoft-direct.ch/

Обновлено регулярных выражений: ^(http|https):\/\/([\w\d + (\-)+?]+\.)+[\w]+(\/.*)?$

+4

и какие почасовые ставки вы платите? – Jonesopolis

+1

В течение многих лет обсуждались gTLD, которые поступают в систему доменных имен. И все же вы думаете, что сегодня разумно реализовать что-то, что ограничивает TLD? –

+0

Возможный дубликат [Требуется регулярное выражение для проверки URL-адреса и поддержки% 20 и()] (http://stackoverflow.com/questions/2068405/need-a-regex-to-validating-a-url-and-support -20-and) – Raidri

ответ

4

Это Regex должны проверить простые сценарии в соответствии с Ваши ограничения. Вы можете легко поиграть с ним и улучшить его (который я настоятельно рекомендую, во-первых, потому что он очень прост в этом состоянии, а во-вторых, потому что вы новичок в Regex :)).

^(http|https):\/\/[\w\d]+\.[\w]+(\/[\w\d]+)$ 

Проверьте это на Regex 101

Basic объяснение:

(http|https):\/\/ 

Если начать с http или https, а затем ://

[\w\d]+ 

F ollowed от N букв и/или цифр

\.[\w]+ 

сопровождаемых dot и набором букв. например: .com, .net и такой (обратите внимание, что вы должны изменить к \.[\d\w]+, чтобы цифры также)

(\/[\w\d]+) 

Круги, необязательно, от в / и набор букв и/или цифр (например: /questions)

ПРИМЕЧАНИЕ:: Если вы хотите получить полный валидатор URL-адресов, для этого вам понадобится Google.

+0

Почему я получаю 9 ошибок, просто добавив Regex? Сообщение об ошибке: непризнанная escape-последовательность – brothers28

+0

Вам нужно избежать обратных косых черт на C#. Измените строку следующим образом: '@"^(http | https): \/\/[\ w \ d] + \. [\ W] + (\/[\ w \ d] +) $ "' – everton

+0

Итак, теперь я должен добавить/в конце, что он работает, так? – brothers28