Python正则表达式验证邮箱

2/22/2017来源:ASP.NET技巧人气:1599

邮箱名称部分为: [a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4} 域名部分: [a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+ 连起来 ^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$ 示例:
>>> import re
>>> str=r'^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$'
>>> if re.match(str,'hello.world@163.com'):
	PRint('OK')

	
OK常用正则表达式

\d可以匹配一个数字,\w可以匹配一个字母或数字,所以:


'00\d'可以匹配'007',但无法匹配'00A';
'\d\d\d'可以匹配'010';
'\w\w\d'可以匹配'py3';


.可以匹配任意字符,所以:



'py.'可以匹配'pyc'、'pyo'、'py!'等等。

要匹配变长的字符,在正则表达式中:

用*表示任意个字符(包括0个),

用+表示至少一个字符,

用?表示0个或1个字符,

用{n}表示n个字符,

用{n,m}表示n-m个字符

来看一个复杂的例子:\d{3}\s+\d{3,8}。

从左到右解读一下:


\d{3}表示匹配3个数字,例如'010';
\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ',' '等;
\d{3,8}表示3-8个数字,例如'1234567'。
用[]表示范围,比如:


[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;
[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等;
[a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;
[a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。
^表示行的开头,^\d表示必须以数字开头。
$表示行的结束,\d$表示必须以数字结束。