使用正则表达式验证电子邮件的最大长度

时间:2014-06-09 07:09:25

标签: java regex maxlength

我找到了这个用于电子邮件验证的正则表达式。

[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})

我希望电子邮件的最大长度为20个字符,因此我将其更改为:

([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})){0,20}

但是当我输入超过20个字符时,它接受了! 我也用过

^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})){0,20}$ 

但它没有正常工作。我想在java代码中使用它

1 个答案:

答案 0 :(得分:1)

您不能只将{0,20}添加到整个正则表达式中,因为这意味着每个电子邮件地址的出现次数为0到20次。

你可以使用lookahead来强制执行长度:

^(?=.{1,20}$)[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$