gpt4 book ai didi

.net - 电子邮件的正则表达式不接受超过一个点或撇号

转载 作者:行者123 更新时间:2023-12-04 02:07:03 25 4
gpt4 key购买 nike

我知道有数以千计的关于正则表达式的问题 like using a regular expression to validate an email addressregular expression to match single dot but not two dots .

我创建了一个正则表达式,如下所示,它接受 '(撇号)和 .(点)。

/^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$/

但它也会接受连续的双点和连续的双撇号。我该如何预防?

例如:

john's.presonal@somedomain.com 是正确的。

john's..presonal@somedomain.com 不正确。

john's.presonal.email@somedomain.com 是正确的。

My Fiddle Here

我了解在超链接之前查看我需要使用 '/^([^\.]|([^\.])\.[^\.])*$/' ,但不确定如何创建我的正则表达式!

最佳答案

只需在您的 ^

之后添加此否定前瞻
(?!.*(?:''|\.\.))

这是如何运作的?

(?!.*(?:''|\.\.)) 是一个否定前瞻断言:在当前位置(即字符串的开头),我们不能匹配后跟两个撇号或两个点的任何字符。

其他调整

因为这不是问题所在,所以我没有分析您的正则表达式的其余部分。然而,一目了然:

  1. {1,} 可以写成+
  2. 您的初始 [\w-\.\'] 表示电子邮件可以以点(以及其他字符)开头。你确定那是有效的吗?如果不是,则从允许集中的一个字符开始匹配,然后仅添加量化集。
  3. 末尾的 {2,3} 适用于 comus 等 TLD。但是您确定要排除诸如 mobi 之类的 TLD 吗?

车轮

作为引用,这里有一些已经发明的“轮子”的例子。这是 RegexBuddy 库中的两个电子邮件表达式。

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}\b

RFC2822:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

关于.net - 电子邮件的正则表达式不接受超过一个点或撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23930621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com