电子邮件的正则表达式,介于 10 到 30 个字符之间



>我必须为电子邮件制作正则表达式。只允许在@符号之前有字母或数字,可以选择只在开头不能的点。在@符号之后,只允许有字母或数字,正好有一个点,点之后至少2个字符。

这就是我的表情

/([a-zA-Zd*])+(.?)([a-zA-Zd*])*@{1}([a-zA-zd*])+(.){1}([a-zA-Zd*]){2,}/

整封电子邮件应该有 10 到 30 个字符,我不知道该怎么做。

谢谢

实际上,您可以在模式前面加上一个前瞻和量词来匹配 10 到 30 个字符: (?=^.{10,30}$)

然后,您的模式如下所示:

(?=^.{10,30}$)([a-zA-Zd*])+(.?)([a-zA-Zd*])*@{1}([a-zA-zd*])+(.){1}([a-zA-Zd*]){2,}

演示

允许重复的语法范围为 {n,m} 。 你写{1}的意思是"正好一个",这是没有意义的。 {10,30}是您正在寻找的范围。

另外,知道"字母"的转义码。 w是"字字",与[a-zA-Z0-9_]相同。为什么字符范围中有"*"?

所以问题是你的部分最终可能是不同长度的,完成后需要检查总数,对吧?

在Perl中,你可以包含代码作为断言。 因此,包括(?{ length($&) <= 30 })作为最终断言。

^(?=^.{10,30}$)(?=^[A-Za-z0-9])[A-Za-z0-9.]+@[A-Za-z0-9]+.[A-Za-z]{2,}$

https://regex101.com/r/cBACF2/10

应在 10 到 30 (?=^.{10,30}$)之间从字母和数字开始(?=^[A-Za-z0-9])包含字母和数字以及点[A-Za-z0-9.]最后一个点之后至少有两个字母 [A-Za-z]{2,}

最新更新