正则表达式之-验证邮箱
一 邮箱正则概述昨天在开发项目的时候,有一个验证邮箱的需求,本来想着自己写一个正则表达式来验证的,但是写的时候却发现很多关于正则的知识都忘的差不多了。有些东西想记住真的就要重复练习,看明白了没有用,要天天练习才行。 ^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61} [a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$ 是不是看的有点懵逼,没关系,推荐大家用一个神奇的网站,这个网站能把写的正则转换成流程图的形式,让大家一目了然的观看。现在把我们要写的正则输入进去,得到流程图如下 二 邮箱正则分析从上图中我们可以看出,该正则的大致形式是什么样的了?下面我们结合正则表达式和流程图来分析一下邮箱的验证正则。我上网查阅了关于邮箱命名规则的资料,但是基本上都没有一个标准的邮箱命名规则。 2.1 邮箱前缀首先我们来看看@符号之前的命名,即邮箱前缀,邮箱前缀的要求比较简单,只要不是什么特别特殊的符号都行,也不管你有多少位数。所以邮箱前缀部分的正则如下 [a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+ 说明:(1)正则中[]表示一个集合,即匹配的字符串可以是集合中的任意一个符号 (2)a-z/A-Z 中的 -符号表示从a到z,即a,b,c,d.....z,而不是表示a,z,-这三个 (3)+表示数量级单位 一次或多次。{1,n} 2.2 邮箱后缀部分现在我们来分析分析@部分之后.部分之前的内容 @[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])? 这段正则最难理解的部分其实就是(?:表示的什么意思了),最开始我也不明白,通过查阅了部分资料发现(?:)表示的是非捕获符号,即可以匹配到该项,但是不会捕获。(如match中不能通过$1,$2来表示捕获项) (?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)* 该部分和前面的部分相似。这里就不再多说了。 三 总结对于编码来说,只看是没有用的,必须要多练习,特别是对于不熟悉的内容。正则核心内容其实就是字符(几个)字符(几个)这种。字符组织形式有[字符字符字符],如果需要捕获内容用(字符字符字符)。然后次数的组织形式就是* ?+ {n,m}这几类。勤加练习,肯定能熟练运用的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |