【问题标题】:What is this regex means? [duplicate]这个正则表达式是什么意思? [复制]
【发布时间】:2016-06-10 18:22:28
【问题描述】:

我发现这个正则表达式作为电子邮件验证,但我不明白这是什么意思,我尝试输入多种形式的电子邮件但它们不起作用,我认为这个正则表达式有问题。

^[A-Z0-9][A-Z0-9._%+-]{0,63}@(?:[A-Z0-9]{1,63}.){ 1,125}[AZ]{2,63}$

谁能解释一下这个正则表达式是什么意思并举个例子。

提前致谢。

【问题讨论】:

  • 其中是否有您不理解的特定部分?如果不是,这个问题太宽泛了。
  • regex101 是你的朋友。无论如何,这只是对(某种)有效电子邮件地址的另一种检查。
  • 这看起来肯定是错误的,因为电子邮件不应该是这么大的63125 字符字符串。

标签: regex email-validation


【解决方案1】:

首先,所有A-Z(只有大写字母)可能都应该是a-zA-Z

^& 是输入的开始和结束。

[A-Z0-9][A-Z0-9._%+-]{0,63}

然后它会查找 0 到 63 个字符对之间的任何数字,其中第一个是大写字母或数字,第二个是这些字符中的任意一个:AZ、0-9、.、_、%、+、 -.

@(?:[A-Z0-9]{1,63}.){1,125}

之后,它会查找字符 @ 后跟 1 到 125 个字符集,其中包含 1 到 36 倍 AZ 或 0-9 以及任何字符(. 可能意味着是 \.) .

[A-Z]{2,63}

最后,它会在 A-Z 之间查找 2 到 63 次字符。

"TEST@TT03SFD.TT" 应该适用于这个正则表达式。这真的很难用语言表达,所以我希望它有一些意义......我会改用^[a-zA-Z0-9._%+-]{1,63}@([a-zA-Z0-9]{1,53}\.){1,125}[a-zA-Z]{2,63}$

【讨论】:

  • 非常感谢,出色的解释和示例工作
【解决方案2】:

这是您的正则表达式的一个很好的解释 How to Find or Validate an Email Address

【讨论】:

    【解决方案3】:

    你在使用 PHP 吗? 我会改用这个命令

    filter_var('bob@example.com', FILTER_VALIDATE_EMAIL);
    

    但是,您提供的正则表达式必须满足电子邮件外观的特定要求

    第一个字符必须是字母数字。

    没有应用于此正则表达式的选项,因此,它要求电子邮件的所有字母都大写

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2021-05-20
      相关资源
      最近更新 更多