2014-01-10 367 views
1

在我的「ServiceEditModel」類中,我有一個屬性Url和typeof Uri。爲了進行驗證,我搜索了一個正則表達式,它檢查在我的「編輯」頁面上填寫的Url是否有效。
正則表達式應該檢查正則表達式的網址檢查

  1. 有一個http://或https://
  2. 身體只包含字母和數字
  3. 而故事的結局是例如像.COM,。淨,.CH
  4. 應該是可能的,這背後有另外一個參數一樣的結局例如https://stackoverflow.com/questions

在正則表達式來在看上去像個我的代碼E本:

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

我已經找了正則表達式,但找不到合適的人,因爲這實際上是我第一次用的experiance正則表達式。

感謝您的幫助!

編輯

我更新了我的正則表達式,這樣它也允許的URL以「 - 」如http://www.comsoft-direct.ch/

更新的正則表達式角色:根據^(http|https):\/\/([\w\d + (\-)+?]+\.)+[\w]+(\/.*)?$

+4

以及您每小時支付的費用是多少? – Jonesopolis

+1

多年來,有關於域名系統的gTLD一直在談論。但是,您認爲今天實施限制頂級域名的事情是合理的? –

+0

[需要正則表達式來驗證Url並支持%20和()](http://stackoverflow.com/questions/2068405/need-a-regex-to-validating-a-url-and-support -20-) – Raidri

回答

4

這個表達式應該檢查簡單的場景你的約束。你可以很容易地玩它,並改進它(我強烈建議,首先,因爲它在這種狀態非常簡單,其次,因爲你是一個正則表達式初學者:))

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

檢查它Regex 101

基本解釋:

(http|https):\/\/ 

應與httphttps開始,其次是://

[\w\d]+ 

˚F由N個字母和/或隨之而來的是dot數字

\.[\w]+ 

和一組字母ollowed。例如:.com.net等(請注意,您必須更改到\.[\d\w]+允許數字也)

(\/[\w\d]+) 

其次,可選,由/和一組字母和/或數字(例如:/questions

注意:如果你想要一個完全通用的URL驗證器,那麼你必須爲此谷歌。

+0

爲什麼只通過添加正則表達式就會出現9個錯誤?錯誤消息:無法識別的轉義序列 – brothers28

+0

您必須在C#上跳過反斜槓。將您的字符串更改爲以下內容:「@」^(http | https):\/\/[\ w \ d] + \。[\ w] +(\/[\ w \ d] +)$「' – everton

+0

所以現在我必須添加/最後它的工作是正確的? – brothers28