电子邮件地址的 JavaScript 正则表达式,限制为 40 个字符

我正在尝试将电子邮件地址的正则表达式与以下条件相匹配。

  • 字符串不得超过 40 个字符。

  • 字符串匹配 emailid@domain 格式,其中 emailid 和域都只包含小写英文字母、数字和句点 (.)

  • 域应至少包含一个句点 (.)

  • 电子邮件 ID 和域都不能包含任何连续的句点 (.)

到目前为止,我只能用这个正则表达式满足第二个条件:

/^[a-z0-9.]+@[a-z0-9.-]+\.[a-zA-Z]{2,6}$/

任何想法,我怎样才能完成其他条件?


宝慕林4294392
浏览 426回答 2
2回答

慕桂英4014372

您可以使用单个否定前瞻来确保字符串不包含 41 个字符。如果您重复不带句点的字符类 1 次或多次,然后有选择地重复以句点开头的组,则会阻止匹配连续的句点。这部分\.[a-zA-Z]{2,6}$已经确保至少有一个周期。^(?!.{41})[a-z0-9]+(?:\.[a-z0-9]+)*@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-zA-Z]{2,6}$请注意,因为-仍然在这个字符类中[a-z0-9-]+,连续的连字符仍然是可能的。如果你不想允许这个,你可以使用^(?!.{41})[a-z0-9]+(?:\.[a-z0-9]+)*@[a-z0-9]+(?:[.-][a-z0-9-]+)*\.[a-zA-Z]{2,6}$

米琪卡哇伊

使用积极的前瞻:/(?=^[a-z0-9.]+@[a-z0-9.-]+\.[a-zA-Z]{2,6}$)(?=^.{1,40}$)/"(?=match this expression)(?=match this too)(?=oh, and this)"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript