【问题标题】:Email address regular expression for JavaScriptJavaScript 的电子邮件地址正则表达式
【发布时间】:2019-08-07 09:31:14
【问题描述】:

我正在尝试为电子邮件地址实施正则表达式,其中电子邮件的第一部分不应超过 64 个字符,@ 符号后的第二部分不应超过 253 个字符,而我做了什么

/^([A-Za-z0-9_\-\.]{1,64})+\@([A-Za-z0-9_\-\.]{1,253})+\.([A-Za-z]{2,4})$/

但即使第一部分超过 64 个字符,它仍然是不应该出现的匹配,我正在使用此链接来测试我的正则表达式:https://regex101.com/

谁能帮忙解决这个问题

【问题讨论】:

标签: javascript regex


【解决方案1】:

您将使用量词的组重复 1 次以上。

您可以省略量词(如果您不想单独使用或引用它们,也可以省略组)

请注意,您不必对字符类中的点进行转义。

^[A-Za-z0-9_\-.]{1,64}@[A-Za-z0-9_\-.]{1,253}\.[A-Za-z]{2,4}$

Regex demo

【讨论】:

  • [A-Za-z0-9_\-.]{1,253}\.[A-Za-z]{2,4}$ 将允许超过 253 个字符。
  • 哦我现在明白了,所以我不应该使用加号,因为它重复了组
  • @WiktorStribiżew 我认为这是@符号之后的第二部分,除了\.[A-Za-z]{2,4}$
  • 那么,第一部分在@之前,第二部分在@之后,或者你的意思是还有第三部分?还是问题问得不好? @Sora,“第二部分”是什么意思?字符长度限制是否包括\.[A-Za-z]{2,4}
【解决方案2】:

模式中的量词过多:+{1,64}) 之后会重复括号中的模式 1 次或多次,这不太可能是您所期望的。与([A-Za-z0-9_\-\.]{1,253})+ 相同。

你可以使用

/^[\w.-]{1,64}@(?!.{254})[\w.-]+\.[A-Za-z]{2,4}$/

详情

  • ^ - 字符串开头
  • [\w.-]{1,64} - 1 到 64 个字母、数字、_.- 字符
  • @ - 一个 @ 字符
  • (?!.{254}) - 右边不允许有 254 个字符
  • [\w.-]+ - 1+ 个字母、数字、_.- 字符
  • \. - 一个点
  • [A-Za-z]{2,4} - 两个、三个或四个 ASCII 字母
  • $ - 字符串结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 2011-10-14
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    相关资源
    最近更新 更多