我有这个 MVC 应用程序,我希望能够允许用户输入 6 到 255 个字符长的用户名,包括我认为合适的特殊字符。我有一个简单的正则表达式:
[RegularExpression(@"^([a-zA-Z0-9!\@#\$%\^&\(\)-_\+\.'`~/=\?\{\}\|]){6,255}$", ErrorMessageResourceType = typeof(AdminResource), ErrorMessageResourceName = "UserNameFormatError")]
验证在一定程度上起作用。它不会让您输入少于 6 个字符的用户名,也不会让您输入超过 255 个字符的用户名,它还会让您使用我列出的所有特殊字符。有趣的是,它也会让你使用“<”和“>”,我不想让它使用,因为那样你就会开始在后端出现一些错误,因为安全人员认为你正在尝试注入(inject)恶意代码或我们。这不是重点,当它们不包含在正则表达式中时,验证为什么允许使用它们?
最佳答案
破折号似乎是罪魁祸首。除了在组的开头,它会表示一个范围。因此,您允许 )
和 _
之间的所有内容。您可以逃脱或移动它。
关于regex - 为什么 MVC 验证对 "<"和 ">"不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27610211/