邮件中javascript最小长度的验证问题

Validation issue in email for minimum length in javascript

本文关键字:验证 问题 javascript      更新时间:2023-09-26

我使用下面的正则表达式来验证电子邮件,它在大多数情况下工作良好。但是,即使我指定邮件的最小长度为5,它也接受2作为最小长度。那么我在哪里改变它,以便接受最小长度为5个字符

(?=^.{5,254}$)(^(?!.*__.*)[a-z0-9]+(_?)*[a-z0-9]+(?:''.[a-z0-9!#$%&*+/=?^`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9]*[a-z0-9])?''.)+[a-z0-9](?:[a-z0-9]*[a-z0-9])?$)

我在regex开头指定了最小和最大长度

似乎有一个问题,你已经定位了最小最大限制的方式:

(^(?!.*__.*)[a-z0-9]{4,253}(_?)[a-z0-9]+(?:'.[a-z0-9!#$%&*+'/=?^`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9]*[a-z0-9])?'.)+[a-z0-9](?:[a-z0-9]*[a-z0-9])?$)

demo here: https://regex101.com/r/dG7vZ8/1

这里允许的最小长度是5个字符

您可以看到{4,253}写成regex的后一部分,总是在@符号

之前匹配一个字符。

您似乎在正则表达式中使用了遍历。据我所知,其中一些是javascript不允许/不支持的,因此解析器无法识别。

你可能还想缩短你的正则表达式。我认为email-regex可以更短,比如:

[a-z0-9!#$%&*+/=?^{|}~-.]+@[a-z0-9!#$%&*+/=?^ {|}~-.]+