【问题标题】:Can someone explain what this Email regex means有人可以解释这个电子邮件正则表达式的含义吗
【发布时间】:2013-04-27 00:45:20
【问题描述】:
^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))
    @((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)
  +[a-zA-Z]{2,}))$

我只能理解正则表达式的一部分,而不是整个表达式,比如

([^&lt;&gt;()[\]\\.,;:\s@\"]+(\.[^&lt;&gt;()[\]\\.,;:\s@\"]+)*)

匹配一个或多个不是字符的字符

<>()[\]\\.,;:\s@\"  \\  Not sure what this [\]\\  and \s@\ means

我也可以理解其他一些部分,但不能作为一个整体来理解。

【问题讨论】:

  • 你从哪里得到的?是传递给new RegExp 的字符串,还是省略了文字分隔符?
  • 我正在使用 javascript 验证,并在它用于测试的地方遇到了它email Address 我试图理解它但徒劳无功
  • myezapp.com/apps/dev/regexp/show.ws 将其插入此处以直观地解释捕获组等。这是你的:tinyurl.com/ccuqrwk
  • 前面有反斜杠的条目是转义字符,会有其他含义。 \] 只是 ] 字符,因为这通常会结束课程,而 \\ 是转义的反斜杠,因此仅表示反斜杠本身。 \s 是空格的特殊字符类。
  • 如果你在你的代码中使用这样的正则表达式,我必须跟着你去弄清楚,我会弄清楚你住在哪里! “始终编写代码,就好像最终维护你的代码的人是一个知道你住在哪里的暴力精神病患者一样。”

标签: javascript regex validation


【解决方案1】:

这是来自 debuggex.com 的易于查看的插图

【讨论】:

  • 很棒的网站!据此,我姓氏中带有撇号的电子邮件地址(我无法控制)不会通过此正则表达式。
  • 您的图像实际上是关闭的,因为当您复制并粘贴正则表达式时,您会得到一堆 OP 添加的空格,因此我们不必横向滚动。不过很酷的网站,已添加书签。这里更新了:tinyurl.com/cklksdd
【解决方案2】:

给你:

^(
    (
        [^<>()[\]\\.,;:\s@\"]+ // Disallow these characters any amount of times
        (
            \. // Allow dots
            [^<>()[\]\\.,;:\s@\"]+ // Disallow these characters any amount of times
        )* // This group must occur once or more
    )
    | // or
    (\".+\") // Anything surrounded by quotes (Is this even legal?)
)
@ // At symbol is litterally that
(
    // IP address
    (
        \[ // Allows square bracket
        [0-9]{1,3} // 1 to three digits (for an IP address
        \. // Allows dot
        [0-9]{1,3} // 1 to three digits (for an IP address
        \. // Allows dot
        [0-9]{1,3} // 1 to three digits (for an IP address
        \. // Allows dot
        [0-9]{1,3} // 1 to three digits (for an IP address
        \] // Square bracket
    ) 
    | // OR a domain name
    (
        ([a-zA-Z\-0-9]+\.) // Valid domain characters are a-zA-Z0-9 plus dashes
        +
        [a-zA-Z]{2,} // The top level (anything after the dot) must be at least 2 chars long and only a-zA-Z
    )
)$

【讨论】:

    【解决方案3】:

    “不确定[\]\\\s@\" 是什么意思”

    \] 是转义的]
    \\ 是转义的\
    \s 是任何空格
    @@
    \"是转义的"

    “+是什么意思”

    + 表示+ 之前的“一个或多个”

    【讨论】:

      猜你喜欢
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多