相关疑难解决方法(0)

4099
推荐指数
43
解决办法
281万
查看次数

正则表达式:仅允许域和顶级域中间有连字符的电子邮件验证

我知道这个问题以前被问过很多次,但我还没有找到任何真正满足电子邮件地址必须满足的所有条件才能被视为有效的内容。

\n

考虑以下作为电子邮件地址的结构:

\n
part1@part2.part3.part4\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 第 1 部分=用户名

    \n
  • \n
  • 第2部分=域

    \n
  • \n
  • 第3部分和第4部分=顶级域

    \n
  • \n
\n

这些是必须满足的所有条件:

\n
    \n
  1. 电子邮件地址不得接受空格
  2. \n
  3. 电子邮件地址不得以点或字母或数字以外的字符结尾
  4. \n
  5. 只允许有一个@符号
  6. \n
  7. at 符号前后不能有特殊字符
  8. \n
  9. 域名点(电子邮件地址第二部分之后的点)前后不能有特殊字符
  10. \n
  11. 您不能在用户名中连续输入两个或多个点
  12. \n
  13. 在域中,@和点之间,@和点旁边的字符必须是字母或数字,中间唯一允许的特殊字符是连字符。
  14. \n
  15. 步骤 7 中的操作同样适用于顶级域(第 3 部分和第 4 部分或电子邮件)
  16. \n
\n

这是我当前使用的正则表达式:

\n
^([\\w\\.\\-]+)@([\\w\\-]+)((\\.(\\w){2,9})+)$\n
Run Code Online (Sandbox Code Playgroud)\n

但不满足条件:4、5、6、7和8

\n

我只是想弄清楚如何补充我的正则表达式并在这个过程中学习。

\n

编辑

\n

电子邮件地址中允许使用的唯一特殊字符是:点、连字符、下划线和 at 符号

\n

这是无效电子邮件的列表

\n

mkyong \xe2\x80\x93 必须包含 \xe2\x80\x9c@\xe2\x80\x9d 符号

\n

mkyong123@.com \xe2\x80\x93 域不能以点 \xe2\x80\x9c.\xe2\x80\x9d 开头

\n

mkyong()*@gmail.com \xe2\x80\x93 email\xe2\x80\x99s 只允许字符、数字、下划线和破折号

\n

mkyong@%*.com …

javascript regex email

1
推荐指数
1
解决办法
1万
查看次数

JS-将单个电子邮件验证模式转换为多个电子邮件验证模式。

我正在努力创建一个Regex模式来验证多封电子邮件。我知道这个话题已经被广泛讨论,但是,在对它们进行研究之后,我找不到我的具体问题的答案。我的问题如下。

我正在处理的项目是用PHP编写的,并且使用FILTER_VALIDATE_EMAIL。我的目的是编写一种前端电子邮件验证程序,以与FILTER_VALIDATE_EMAIL一致的方式用于单个和多个电子邮件。在这里https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js 我找到了符合最新RFC标准规定的理想Regex模式,即:

^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126})+(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))]))$
Run Code Online (Sandbox Code Playgroud)

现在,我一直在尝试为多封电子邮件使用这种特殊的模式功能。我的问题来了,我该怎么办?我试图设定

[\s*,]*
Run Code Online (Sandbox Code Playgroud)

为了使多个地址通过,到目前为止,我头疼不已,因此非常感谢您的帮助,在此先感谢您!

javascript regex

0
推荐指数
1
解决办法
61
查看次数

标签 统计

javascript ×3

regex ×3

email ×2

email-validation ×1

validation ×1