【问题标题】:Regular Expression for email validation fails电子邮件验证的正则表达式失败
【发布时间】:2012-07-23 09:49:09
【问题描述】:

低于电子邮件验证的正则表达式,

^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$

在这里我无法理解[\w\.-] 的目的。谁能告诉我?

使用这种模式,

如果我在电子邮件字段中提供a@test.com,验证将失败。在@ 之前的电子邮件字符串中,如果只有一个字符或数字出现,则验证失败。是这样吗?

问候, 卡提克

【问题讨论】:

  • 这是用于 Javascript 的?顺便说一句,正则表达式的目的看起来是错误的。你是从哪里弄来的?这将是一个 proper regular expression 用于电子邮件地址验证。
  • 为什么人们要使用正则表达式进行电子邮件验证?有足够的库来完成这项任务
  • @loldop:你能告诉我除正则表达式之外的用于电子邮件验证的库吗?
  • @Karthik 是的,我可以:metacpan.org/module/Email::Valid。这是 perl 解决方案。
  • 嘿,看看我的回答。看看它是否适合你

标签: regex email-validation


【解决方案1】:

[\w.-] 表示单个字符:

  • 单词字符(字母数字或_
  • .
  • -

a@test.com 失败,因为此正则表达式要求在 @ 之前至少有 2 个字符。

【讨论】:

  • 简单的解决方法是将[\w\.-]*[a-zA-Z0-9] 更改为([\w.-]*[a-zA-Z0-9])?,即使第一个字符之后的部分为可选(并删除字符类中多余的反斜杠)。
  • @tripleee 我无法从最初的问题中看出拒绝 a@test.com 是否可取:P.
  • 啊,也许问题真的是“我应该解决这个问题”吗?是的,你应该这样做。
【解决方案2】:

使用此正则表达式验证电子邮件 ID。适合我

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*  

如果这对您有用,请标记为答案:)

【讨论】:

    猜你喜欢
    • 2017-01-31
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2011-10-27
    相关资源
    最近更新 更多