Python正则表达式验证邮箱

时间:2021-10-04 17:12:02
邮箱名称部分为: [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}。 从左到右解读一下:
  1. \d{3}表示匹配3个数字,例如'010';
  2. \s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ',' '等;
  3. \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$表示必须以数字结束。