我有这个MVC应用程序,我希望能够允许用户输入长度为6到255个字符的用户名,包括我认为合适的特殊字符。我有一个简单的正则表达式:
[RegularExpression(@"^([a-zA-Z0-9!\@#\$%\^&\(\)-_\+\.'`~/=\?\{\}\|]){6,255}$", ErrorMessageResourceType = typeof(AdminResource), ErrorMessageResourceName = "UserNameFormatError")]
验证在一定程度上起作用。它不会让您输入短于6个字符的用户名,也不会让您输入超过255的用户名,并且它还允许您使用我列出的所有特殊字符。有趣的是,它也会让你使用“<”和“>”,我不想让它使用,因为那时你开始在后端得到一些错误,因为安全人员认为你试图注入恶意代码或w / e。除此之外,如果验证允许在正则表达式中不包含这些内容时如何使用?
答案 0 :(得分:3)
破折号似乎是罪魁祸首。除了在组的开头,它将表示范围。因此,您允许)
和_
之间的所有内容。你可以逃脱或移动它。