Regex 将电子邮件地址用作用户名的正则表达式?
是否有一个正则表达式可以使用普通用户名或电子邮件地址作为用户名?我希望用户能够输入自己的用户名,或只是使用他们的电子邮件地址作为用户名,我无法找到任何关于如何正确实现这一点的可靠信息。它还必须通过验证,例如:如果用户选择创建自己的用户名,则必须遵守我的用户名策略,该策略将用户名限制为以字母或数字开头,并且没有特殊字符,或者如果用户输入电子邮件,则必须遵守电子邮件规则(典型的电子邮件规则)。有人对此有什么建议吗?试试这个正则表达式:Regex 将电子邮件地址用作用户名的正则表达式?,regex,asp.net-mvc,validation,data-annotations,Regex,Asp.net Mvc,Validation,Data Annotations,是否有一个正则表达式可以使用普通用户名或电子邮件地址作为用户名?我希望用户能够输入自己的用户名,或只是使用他们的电子邮件地址作为用户名,我无法找到任何关于如何正确实现这一点的可靠信息。它还必须通过验证,例如:如果用户选择创建自己的用户名,则必须遵守我的用户名策略,该策略将用户名限制为以字母或数字开头,并且没有特殊字符,或者如果用户输入电子邮件,则必须遵守电子邮件规则(典型的电子邮件规则)。有人对此有什么建议吗?试试这个正则表达式: /^(?[A-Z\d][A-Z\d-]{5,10}{124;[A
/^(?[A-Z\d][A-Z\d-]{5,10}{124;[A-Z0-9.[u%+-]+@[A-Z0-9.-]+\[A-Z]{2,4}$/i
表达式有两部分:
- 第一部分验证用户名。请随意优化此部分以匹配您自己的策略。这里的正则表达式接受以字母或数字开头的用户名。用户名不能少于11个字符<代码>-和“\u1”是允许的
- 第二部分验证电子邮件。此正则表达式在撰写本文时正在使用。但是,您可以使用另一个电子邮件regex
/[\w.]{3,10}/
,取决于您的限制)——而不是将它弄成一个令人头痛的正则表达式。使用一个允许用户名使用所有特殊字符的正则表达式会更容易吗?这样,如果他们决定使用他们的电子邮件地址,它仍然会验证并正确保存?@Skrubb在这种情况下,允许使用无效电子邮件。表达式第一部分的长度限制不会导致表达式第二部分出现问题吗?验证如何知道有人正在使用与第一选择相同的电子邮件?@(“a-zA-Z0-9{6,20}124;[a-zA-Z!$\+\-]+@[a-zA-Z0-9.-+\.[a-zA-Z]{2,4})”我现在的正则表达式使用的是“普通”用户名,没有特殊字符或空格,限制为6-20个字符,但是它没有验证表达式的第二部分。@Skrubb使用命名组,标记行的开始和结束,使用多行和IgnoreCase正则表达式选项:^(?[a-zA-Z0-9]{6,20})|(?[a-zA-Z!$\+\-]+@[a-zA-Z0-9.-+\.[a-zA-Z]{2,4})$