【问题标题】:regex should accept only 5 only 7 alphabet [closed]正则表达式应该只接受 5 个只有 7 个字母 [关闭]
【发布时间】:2019-08-28 02:19:19
【问题描述】:

我有这个正则表达式

var reg = /^[a-zA-Z0-9._]+@[gmail | yahoo | hotmail]{5,7}.[com | net | org]{3}$/

我只想接受带有“.com .net 和 .org”的“gmail hotmail 和 yahoo” 有什么方法...根据我的需要设置上述正则表达式。

还有如何设置范围,使其只接受 5 和 7 个字符的长度。

【问题讨论】:

  • (gmail|yahoo|hotmail) 但是...为什么?如果您指定要匹配的字符串,则不需要任何量词(除非您要匹配 "gmailgmailgmailgmailgmail"
  • 使用| 的替代,而不是在字符类^[\w.]+@(?:gmail|yahoo|hotmail)\.(?:com|net|org)$ 中使用它
  • 使用正则表达式检查邮件地址是没有用的,除非你使用complete expression。您的示例将允许 johndoe@gmail.com 但不允许 johndoe+alias@gmail.com 尽管它们都以同一个邮箱结尾。
  • @第四只鸟感谢它为我工作的人
  • length of 5 and 7 characters 是什么意思?

标签: javascript regex email-validation


【解决方案1】:

正确的语法如下所示:

^[a-zA-Z0-9._]+@(gmail|yahoo|hotmail)\.(com|net|org)$

说明

方括号 ([]) 用于测试是否测试一组给定字符中的字符。圆括号 (()) 用于测试一组给定字符串中的特定字符串(不是字符)。您应该将| 读作“或”。

示例

  • [abc] 将匹配 abc
  • (A1|B2|C2) 将匹配 A1B2C3

此外,. 字符如果不转义 (\.) 将被解释为“任何字符”,除非在方括号内使用。

【讨论】:

  • 那是一个正确的 syntax 但我不确定这是一个正确的正则表达式。撇开名称的有效性不谈,这允许gmail.net 这不是一个正确的电子邮件域。
  • 作为单独的注释 "此外,如果您不转义,. 字符将被解释为“任何字符” (\.)。" 此如果它在字符类中,则不正确。 [.] 永远不会被解释为文字 . stackoverflow.com/questions/399078/…
  • @VLAZ 正则表达式正在执行 OP 的要求,所以我认为它是正确的。可能是XY problem 的情况。感谢您提供有关. 的信息,我已将该信息添加到答案中。
  • 我如何验证电子邮件必须以字母开头...而不是数字。
  • @MuhammadHassan 只需在开头添加另一个块,如下所示:^[a-zA-Z][a-zA-Z0-9._]+...
猜你喜欢
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 2020-07-26
  • 2023-03-30
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多