2014-02-18 116 views
1

我有一個視圖模型與具有RegularExpression DataAnnotation一個屬性:DataAnnotations正則表達式失敗

public class CreateProductViewModel 
{ 
    [RegularExpression("[A-Za-z0-9]")] 
    public string Name { get; set; } 
} 

正則表達式應該只驗證字母數字字符。

但是,試圖保存「abc」值,使驗證失敗。

我也嘗試將正則表達式更改爲"[^A-Za-z0-9]",但這也失敗了。

我在做什麼錯了?

回答

2

在表達式後面添加*或+,因爲現在它會告訴您該字符串只有在一個字母/數字長的情況下才有效。爲了使工作你有兩個選擇:

[RegularExpression("[A-Za-z0-9]+")] 

[RegularExpression("[A-Za-z0-9]*")] 

第一個將不允許空字符串,第二個將允許空字符串。

0

您的原始正則表達式只會匹配單個字母數字字符。當您在RegEx測試程序中使用它時,它可能會顯示它正常工作,因爲它會匹配部分字符串。但是,ASP.NET需要使用正則表達式來匹配整個輸入字符串,因此您的RegEx周圍實際上會放置^$。如果你想匹配多個字符的輸入,你應該量詞添加到您的正則表達式,最有可能*+,像這樣:

[RegularExpression("[A-Za-z0-9]*")]