2012-02-13 30 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

相关问题