【问题标题】:A regular expression for using an email address as username?使用电子邮件地址作为用户名的正则表达式?
【发布时间】:2014-05-13 23:41:54
【问题描述】:

是否有使用普通用户名或电子邮件地址作为用户名的正则表达式?我希望用户能够输入他们自己的用户名,或者只使用他们的电子邮件地址作为用户名,但我无法找到任何关于如何正确实现这一点的可靠信息。它仍然必须通过验证,例如:如果用户选择创建自己的用户名,它必须遵守我的用户名政策,这将它们限制为以字母或数字开头,并且没有特殊字符,或者如果他们输入电子邮件,则必须遵守电子邮件规则(典型的电子邮件规则)。有人对此有什么建议吗?

【问题讨论】:

  • 什么语言?可能更容易找到suitable email regex,然后尝试匹配它或您的用户名正则表达式(类似于/[\w.]{3,10}/,具体取决于您的限制)——而不是将它弄成一个令人头疼的正则表达式。
  • 使用允许所有特殊字符作为用户名的正则表达式会更容易吗?这样,如果他们决定使用他们的电子邮件地址,它仍然会验证并正确保存?
  • @Skrubb 在这种情况下,将允许无效的电子邮件。

标签: regex asp.net-mvc validation data-annotations


【解决方案1】:

试试这个正则表达式:

/^(?:[A-Z\d][A-Z\d_-]{5,10}|[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4})$/i

表达式有两部分:

  • 第一部分验证用户名。随意优化这部分以匹配您自己的策略。此处的正则表达式接受以字母或数字开头的用户名。用户名不能超过 11 个字符。 - 和 '_' 是允许的。

  • 第二部分验证电子邮件。在撰写本文时,此正则表达式 validates 99% of emails 正在使用中。但是,您可以使用其他电子邮件正则表达式。

说明

参考文献

【讨论】:

  • 在表达式的第一部分限制长度会不会导致表达式的第二部分出现问题?验证如何知道某人正在使用电子邮件而不是首选?
  • @"(?:[a-zA-Z0-9]{6,20}|[a-zA-Z!$#\+\-]+@[a-zA-Z0 -9.-]+\.[a-zA-Z]{2,4})" 我为当前的正则表达式设置了这个,以使用没有特殊字符或空格的“普通”用户名,限制为 6-20 个字符,它没有验证表达式的第二部分。
  • @Skrubb 使用命名组,标记行的开始和结束,使用 Multiline 和 IgnoreCase 正则表达式选项:^(?<username>[a-zA-Z0-9]{6,20})|(?<email>[a-zA-Z!$#\+\-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})$
猜你喜欢
  • 2016-12-23
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多