2012-02-13 323 views
0

我在c#中寫驗證正則表達式 - 基本上需要確保屬性中沒有「:」。我是正則表達式的newbee。這是我有什麼,它似乎並沒有工作。我讀初學者的常見問題正則表達式,這就是我想出了"[^:]"如何確保字符串不包含冒號使用正則表達式?

[StringLengthVerifier(MaxValue = 25, IsRequired = true, ErrorMessageResourceName = "MEMUser_UserName")] 
     [RegexVerifier("User Name", @"[^:]", ErrorMessage = "User name cannot contain colons")] 
     public string UserName { get; set; } 

回答

3

通過與串/行邊界元字符包圍字符類:

^[^:]*$ 

並使用正確的正則表達式模式使它們匹配字符串的開始/結束。

或通過使用

\A[^:]*\Z 

(假定C#正則表達式支持它們)。

+0

不確定你的意思是開始/結束。我不允許:在字符串中的任何地方 – katit 2012-02-13 23:50:23

+0

通過說「只有匹配如果字符串有模式:字符串的開始後跟任意數量的非冒號字符後跟字符串的結尾」,您基本上最終的邏輯等同於「不包含冒號」(這是你想要的)。 – Regexident 2012-02-13 23:53:06

+1

Katit,在你原來沒有*的情況下,只會匹配一個字符,所以你希望它重複。在上面的帖子的開頭和結尾的^ $告訴正則表達式匹配在行開頭 - 重複,並確保在文本中找不到冒號直到行尾 – 2012-02-13 23:54:39

1

請勿使用正則表達式。由於您只想檢查冒號的存在,只是確保

UserName.Contains(":") 

評估爲false。有關String.Contains的解釋,請參閱MSDN

+0

我知道string.contains。但是,我想盡可能地進行基於屬性的驗證 – katit 2012-02-13 23:51:15

+0

哪個框架或工具提供了這些基於屬性的驗證? – 2012-02-13 23:51:41

+0

DevForce有。但如果我想在ASP.NET中驗證,我也可以做同樣的RegexValidation – katit 2012-02-13 23:53:24

相關問題