正则表达式以Redux形式进行电子邮件验证

时间:2019-01-28 08:21:49

标签: javascript regex

我正在尝试构建用于电子邮件验证的正则表达式,我还有其他一些条件需要检查:

  1. 允许:大写和小写英文字母,数字0到9

  2. 允许:“ _”,“-”,“。”,“ @”和“'”;

3.a。字符“。”如果不是第一个或最后一个字符,则允许提供

3.b。 “。”不会连续出现两次或多次

3.c。 “。”必须在域名中至少出现一次

  1. 不应包含“。@”或“ @”。

  2. 不应以“。”开头。

  3. “ @”必须出现一次

  4. 在域名中,最后一个“。”之后的字符串长度应至少包含2个字符

  5. 域名中不允许使用“ _”开头

我创建了以下正则表达式:

$array = ["a","b","c","d"]

我没有涵盖所有部分,但第3.b节除外。

有效的电子邮件的

示例:ya.ll.t.j@gg.cc 无效电子邮件的示例:ya..l.f @ dd.cc,y.s.sss ... @ kk.dd

谢谢

1 个答案:

答案 0 :(得分:0)

在模式开始时,对.*\.{2}进行否定超前查询,以确保连续没有两个.

(?!.*\.{2})

还需要进行一些修复和优化。通过在字符串的开头对.使用负向超前查找,.可以避免重复字符集两次(因为第一个与第二个相同,仅没有[^.])。

单独的负字符集可以匹配集合中没有的任何字符-例如,您@之前的@可以匹配换行符,这肯定不是理想的。相反,要确保.之前的最后一个字符不是^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@ ,请使用另一个字符集:

.

(在现代环境中,您可以在@中对[a-zA-Z进行^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@(?!_)(?:[a-z0-9_'-]+\.)+[a-z0-9_'-]{2,}$ 负向后视,以避免重复相同的字符集,但是不支持JS后视到处都是

还要使用不区分大小写的标志,以避免在任何地方都使用validate the tokens。全部:

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
    Authority = "resource_uri",
    RequireHttpsMetadata = false,
    ApiName = "xxxxxx"
});

https://regex101.com/r/tZ7LHt/2