5

我似乎無法找到關於該堆棧溢出類似的話題,所以這裏有雲:ASP.NET MVC [正則表達式]屬性不工作在整個字符串匹配

爲什麼當我指定對我的ASP .NET MVC視圖模型類的定義如下:

[Required] 
[RegularExpression(@"\A\d{3,4}\Z", 
    ErrorMessage = "The security code (CVN) must be between 3 - 4 digits long.")] 
[Display(Name = "Card Security Code (CVN)")] 
public string CardCVN { get; set; } 

這對我的不顯眼的客戶端驗證測試正則表達式無法驗證? (並隨後顯示錶單域錯誤)。

似乎只要我的正則表達式更改爲[RegularExpression(@"\d{3,4}"...刪除整個字符串匹配技術,它完全匹配?它似乎是呈現的jQuery驗證,即使它不適用\A\Z它只匹配整個字符串匹配(做我最初需要的!我錯過了什麼嗎?

謝謝。

回答

3

在客戶端,正則表達式由JavaScript執行,JS不支持\A,\Z\z。您可以改用^$,但您不需要。驗證器中使用的正則表達式通常會自動錨定在兩端。我很確定這是ASP.NET MVC的情況。

+0

謝謝Alan。有趣的是,有人會想到ASP.NET MVC真的應該將它轉換爲:) – GONeale 2011-06-14 00:09:42

2

使用這個代替:@"^\d{3,4}$"

^ - 字符串的開始。

$ - 字符串結尾。

+1

你錯過了\ on \ d。不過謝謝你的迴應。儘管他解釋了他的回答,但我會給予艾倫積分。 – GONeale 2011-06-14 00:07:37