【问题标题】:Regular expression for EDU emails with sub domains [duplicate]具有子域的 EDU 电子邮件的正则表达式 [重复]
【发布时间】:2020-12-10 08:17:15
【问题描述】:

我正在尝试创建一个正则表达式来验证可能有也可能没有子域的 edu 电子邮件。有些学校有“example@hms.harvard.edu”之类的电子邮件,而其他学校有“example@stanford.edu”之类的电子邮件。

([0-9]|[a-z]|[A-Z])+@([0-9]|[a-z]|[A-Z])+([0-9]|[a-z]|[A-Z])\.edu$"

这是我目前拥有的正则表达式,但我并不精通这些。 我希望创建一个表达式来验证具有一个域的电子邮件和具有子域的电子邮件。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: javascript regex validation email-validation


    【解决方案1】:

    在大多数情况下,/^[-\w.]+@[-\w.]+\.edu$/ 应该就足够了。 这个解决方案的唯一问题是,它也可以接受像 hms..harvard.edu 这样的域。

    为了防止这种情况,您可以改用这个正则表达式:/^[-\w.]+@([-\w]+\.)*[-\w]+\.edu$/

    编辑:使用 \w 而不是 [0-9a-zA-Z_]

    【讨论】:

    • 感谢您的回复。 +\.在 ([-\w]+\.) 一个域的情况下创建一个额外的句点?
    • ([-\w]+\.) 匹配一个或多个字母数字字符和后跟一个句点的破折号(在您的示例中,这将是 'hms.' 部分)。 '*' 量词定义该组可以出现 0 次或多次(因此不能有子域,但可以有多个子域)。因此,“example@harvard.edu”和“example@hms.something.harvard.edu”也将被视为有效的电子邮件地址。
    【解决方案2】:

    这应该可以解决问题(修改自 http://emailregex.com/ - 在 How to validate an email address using a regular expression? 中引用):

    /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+edu))$/
    

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 2015-10-03
      • 2019-05-05
      相关资源
      最近更新 更多