【问题标题】:regular expressions in property attributes for asp.net mvcasp.net mvc 的属性属性中的正则表达式
【发布时间】: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


【解决方案1】:

用户名的正则表达式A-Za-z0-9 并且只允许_(就像大多数用户名一样)。

正则表达式: ^[A-Za-z0-9_]{5,12}$

由于检查了您的最小和最大长度,您可以使用^[A-Za-z0-9_]+$

Regex101 Demo

【讨论】:

  • 我尝试添加这个 [RegularExpression(@"^[A-Za-z0-9_]{6,10}$", ErrorMessage = "Hey, no funny symbol stuff")] 但它仍然对某些常规字符抛出验证错误消息
  • {6,10} 是做什么的?
  • 好吧,我确实问过你要允许哪些字符?
  • {6,10} 表示最少 6 个,最多 10 个。
  • 我可以把它拿出来吗,我已经有其他的最小和最大长度的属性了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多