首页 > 解决方案 > RegEx 验证姓名和电子邮件

问题描述

我想使用可以处理两种模式的名称来验证电子邮件格式

有效的

  1. test@domain.com
  2. test user <test@domain.com>
  3. test user<test@domain.com>
  4. "test user" <test@domain.com>
  5. "test user"<test@domain.com>

无效的

  1. "test user" <test@domain.com
  2. "test user" test@domain.com>
  3. test user <test@domain.com
  4. test user test@domain.com>
  5. "test user <test@domain.com>
  6. test user" <test@domain.com>
  7. "test user" test@domain.com

这是我的进展: https ://regex101.com/r/Q00McL/1

标签: javascriptregex

解决方案


为什么物品4. "test user" test@domain.com (valid)7. "test user" test@domain.com (invalid)一样?

如果您想"test user" test@domain.com有效,请使用此模式:

^(?:(?:"[^"\r\n]+"|\w+(?: +\w+)*) *)?\w+@[^<>\s@]+\.\w{2,3}$

相反,如果"test user" test@domain.com应该是无效的使用:

^(?:(?:"[^"\r\n]+"|\w+(?: +\w+)*)*)?\w+@[^<>\s@]+\.\w{2,3}$

推荐阅读