2012-01-10 214 views
1

嗨,大家好我已經看了許多版本的正則表達式驗證,但我不能得到它的工作,它只會在輸入文本之前只允許某些字母,因此如果沒有輸入該文本,沒有什麼可以輸入,因爲它會顯示驗證。例如,我曾嘗試:正則表達式驗證

[Required] 
[RegularExpression("^(?:[www.]|a-z|A-Z|)*$", /*This allows the www. only and nothing else*/ ErrorMessage = "Cars Only")] 
public string Cars { get; set; } 

,我曾嘗試:

[Required] 
[RegularExpression("^(?:(ht|f)tp(s?))\://){1}\S+)|a-z|A-Z|)*$", /*This does not work*/ 
ErrorMessage = "Cars Only")] 
public string Cars { get; set; } 

許多人也,但到多貼將成爲長。

www.可以輸入任何東西,但如果沒有輸入www.,則會顯示錯誤消息。

+0

發生了什麼事我的標籤我能夠使用Razor.asp.net作爲標籤,剃刀網頁的標籤,但不再能在asp.net中使用Razor我應該有權訪問它們標籤感謝編輯我試圖讓它像那樣,但我的瀏覽器不會讓我感謝 – user1137472 2012-01-10 23:07:49

+0

你解決了什麼問題?許多網站的網址不是以「www.」開頭的。 – CodesInChaos 2012-01-10 23:43:46

+0

問題解決了我的親愛的朋友感謝您,當我在這個網站上創建一個問題時,我不能再選擇我可以使用的標籤,例如:Razor.asp.net和Razor網頁這些在我使用時可用添加問題,現在他們已從我的帳戶中刪除。 – user1137472 2012-01-10 23:46:51

回答

3

「www。」匹配:

www\..* // no line start/end criteria 
^www\..*$ // line start/end enforced 

這裏有一個更全面的表達,處理前綴:

^(https?|ftp):\/\/www\..*$ 

這將匹配:

http://www.test.com 
https://www.test.com 
ftp://www.test.com/test 

更妙的是,這使得前綴強制的,但「WWW 「。可選:

^(https?|ftp)\:\/\/(www\.)?.*$ 

這將匹配:

^(https?|ftp)\:\/\/(www\.)?.*\/[\w\-\+\%]*\.(gif|jpg|jpeg|png)$ 

http://www.test.com 
https://www.test.com 
ftp://www.test.com/test 
http://test.com 
https://test.com 
ftp://foo.org 

匹配圖像這將匹配:

ftp://foo.org/test.png 
https://test.com/image.jpg 
http://www.bar.com/my-image.png 
http://foo.org/my%20image.jpeg 
http://foo.org/my%20image%20test_foo.jpeg 

這將在一開始需要一個前綴,正斜槓,文件名(它允許字母數字字符,下劃線,破折號和包含%或+的URL編碼值)以及有效的圖像擴展名。

這不會是萬無一失的!請記住,可以從任何HTTP處理程序提供圖像。該網址可能與其中的圖片無關。

其他信息

我@Russ凸輪的建議,同意看jQuery validator source code,看看有多少可能性實際上有有。

用戶輸入的URL有可能是有效的形式,但不存在;這可以通過一個簡單的請求來檢查服務器端。

如果您經常需要創建正則表達式,我建議您使用RegexBuddy

我也推薦RegExr快速在線測試。根據您的標準

+0

我該如何做到這一點,因此它需要在任何網址?或更好還只是一個圖像?因爲我的網站上的這個字段允許一個圖像的檔案允許用戶複製一個網址並將其放入並顯示圖像 – user1137472 2012-01-10 23:24:28

+0

您的第二個答案很好,謝謝 – user1137472 2012-01-10 23:29:07

+0

但它允許任何網站英寸有沒有辦法允許第二個圖像 – user1137472 2012-01-10 23:31:05

0

[Required] 
[RegularExpression(@"^www\..+$", ErrorMessage = "Cars Only")] 
public string Cars { get; set; } 

你可以用這個表達式上nregex玩,看看是匹配的,哪些不是。

我懷疑你正在尋找正則表達式來匹配一個有效的URI?如果你是,我會使用一個正則表達式爲客戶端(採取jQuery validate看看URL規則),並創建了服務器端是通過串入Uri.IsWellFormedUriString(string uri, UriKind.Absolute)

+0

我正在使用MVC3,但我不能在我的標籤中包括這與MVC3不兼容它說「。」不承認 – user1137472 2012-01-10 23:11:04

+0

D'oh!忘記了逐字串字面值的'@'前綴。現在就試試 – 2012-01-10 23:13:41

+0

噢,好吧,我會感謝你會讓你 – user1137472 2012-01-10 23:16:02

0

分手了所需零件一個驗證屬性(即讓www.可選,再接下來是可選的,但不依賴於www.

[Required] 
[RegularExpression("^(?:[www.])(?:|a-z|A-Z|)*$", /*This allows the www. only and nothing else*/ ErrorMessage = "Cars Only")] 
public string Cars { get; set; } 
+0

我會嘗試並回復謝謝 – user1137472 2012-01-10 23:08:49

+0

試圖找到一個URL,但你不知道嗎? – user1137472 2012-01-10 23:09:10

+0

當我把它放在www後面時,這不起作用。我不能包括任何 – user1137472 2012-01-10 23:13:43