繁体   English   中英

用于 Redux 表单中电子邮件验证的正则表达式

[英]Regex for email validation in Redux form

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

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

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

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

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

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

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

  2. 不应以“.”开头

  3. “@”必须出现一次

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

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

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

^[a-zA-Z0-9_'-]{1}[a-zA-Z0-9._'-]*([^.]@[^._])([a-zA-Z0-9_.'-])+[.]{1}[a-zA-Z0-9_'-]{2,}$ 

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

有效电子邮件示例: ya.ll.tj@gg.cc 无效电子邮件示例: ya..lf@dd.cc , yssss...@kk.dd

谢谢

在模式的开头,对.*\\.{2}进行负前瞻以确保永远不会有两个. 连续:

(?!.*\.{2})

还有一些修复和优化。 通过对 (a single) 使用负前瞻. 在字符串的开头,您可以避免重复两次字符集(因为第一个与第二个相同,只是没有. )。

单独的负字符集可以匹配不在集合中的任何字符 - 例如,在@之前的[^.]可以匹配换行符,这肯定是不可取的。 相反,要确保@之前的最后一个字符不是. , 使用另一个字符集:

^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@

(在现代环境中,您可以在@处对.进行否定回溯,类似于第一种技术,以避免重复类似的字符集,但 JS 回溯尚未在任何地方都得到支持)

也使用不区分大小写的标志,以避免必须在任何地方使用[a-zA-Z 在全:

^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@(?!_)(?:[a-z0-9_'-]+\.)+[a-z0-9_'-]{2,}$

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM