在模型属性ASP.NET MVC4中自定义正则表达式

时间:2014-08-23 07:48:13

标签: regex asp.net-mvc-4

我需要实现一个允许a-z A-z 0-9和一些特殊字符_ - . @ &

的正则表达式验证

但应该限制

\ / " : ; * ? " < > { } [ ] ( ) | ! ' % ^ 

试过这种模式,但没有用。

[Required]
[Display(Name = "User name")]
[RegularExpression("^[-a-zA-Z0-9_-@]*", ErrorMessage = "Invalid characters!")]
public string UserName { get; set; }

你能建议吗?

2 个答案:

答案 0 :(得分:2)

在正则表达式中,hyphen在Character类中具有特殊含义,用于定义范围。它应该被转义或放在集合的开头或结尾。

尝试

[-\w.@&]

此处\w匹配任何字词[a-zA-Z0-9_]

要验证整个字符串,请使用^$分别匹配字符串的开头和结尾。

要避免空白字符串,请尝试+而不是像*

^[-\w.@&]+$

答案 1 :(得分:1)

试试这个正则表达式:

/^[ A-Za-z0-9-.@&]*$/

<强> REGEX DEMO

如果你想将连字符作为起始字符转义:

^(?!-)[A-Za-z0-9-.@&]*$

<强> REGEX DEMO

如果你想从开始和结束两个方面限制它,那么试试这个:

^(?!-)[A-Za-z0-9-.@&]*+(?<!-)$

<强> REGEX DEMO