【发布时间】:2016-06-25 20:08:50
【问题描述】:
我想防止用户名中出现空格和特殊字符,但我不知道如何在一个数据属性中做到这一点,而 asp.net mvc 只允许每个属性有 1 个正则表达式属性。
[Required()]
[StringLength(10, MinimumLength = 6, ErrorMessage = "Min 6 and max 10 characters")]
[Display(Name = "User Name")]
[RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")]
[RegularExpression(@"^[\%\/\\\&\?\,\'\;\:\!\-]+$", ErrorMessage = "No special characters")]
[Remote("IsUsernameDuplicate", "Account", HttpMethod = "Get", ErrorMessage = "The username is already in use")]
public string UserName { get; set; }
编辑 1 我已将属性更改为
[Required()]
[MinLength(5, ErrorMessage = "Minimum length is 5")]
[MaxLength(12, ErrorMessage = "Maximum length is 12")]
[Display(Name = "User Name")]
[RegularExpression(@"^[A-Za-z0-9_]$", ErrorMessage = "Hey, no funny symbol stuff")]
[Remote("IsUsernameDuplicate", "Account", HttpMethod = "Get", ErrorMessage = "The username is already in use")]
public string UserName { get; set; }
但我在输入chuck 并按tab 时出现错误
编辑 2
用 ^[A-Za-z0-9_]+$ 的正则表达式解决了它
【问题讨论】:
-
允许的字符是什么?同时给出一些有效的用户名示例。
-
不要说什么字符是不允许的,你应该说什么字符是允许的。例如,
^[\w.@_]+$(允许所有数字、字母、点、下划线和 at 符号)。但如果你真的想组合它们,你可以在[^negated character class]中使用\s。 -
您删除了
{6,10}的大小。新大小将是{5,12}。正则表达式将是^[A-Za-z0-9_]{5,12}$。
标签: regex asp.net-mvc custom-data-attribute