[英]Regex for email validation in Redux form
我正在尝试构建一个用于电子邮件验证的正则表达式,我还有几个条件要检查:
允许:大写和小写英文字母,数字0到9
允许:“_”、“-”、“.”、“@”和“'”;
3.a. 特点 ”。” 如果不是第一个或最后一个字符,则允许提供
3.b. “。” 不会连续出现两次或多次
3.c. “。” 必须在域名中至少出现一次
不应包含“.@”或“@”。
不应以“.”开头
“@”必须出现一次
在域名中,字符串长度,在最后一个“.”之后。 , 应该至少有 2 个字符
域名中不允许以“_”开头
我创建了以下正则表达式:
^[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,}$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.