一、关于邮箱的常用正则表达式:

一个匹配所有邮箱格式的代码:

#-*- coding:utf-8 -*-
__author__ = 'zyx'

import re

text = input("Please input your Email address:\n")
if re.match(r'^[0-9a-zA-Z_]{0,19}@[0-9a-zA-Z]{1,13}\.[com,cn,net]{1,3}$',text):
#if re.match(r'[0-9a-zA-Z_]{0,19}@163.com',text):
    print('Email address is Right!')
else:
    print('Please reset your right Email address!')

参考:

  1. Python正则表达式验证邮箱
  2. 正则表达式-邮箱有效性验证
  3. 通用邮箱正则表达式
  4. 常用正则表达式—邮箱(Email)
  5. 匹配Email地址的正则表达式
  6. Python实现正则表达式匹配任意的邮箱
  7. 正则表达式-廖雪峰

二、关于密码的常用正则表达式:

import re
import abort

password = input("Please input your password:\n")
if re.search("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$", password):
	pass
else:
	abort(400)

解释:

一般密码要求必须包含数字、字母,6-10位,校验的正则表达式如下

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$
 
  • 1

分开来注释一下:
^ 匹配一行的开头位置
(?![0-9]+$) 预测该位置后面不全是数字
(?![a-zA-Z]+$)预测该位置后面不全是字母
[0-9A-Za-z] {6,10} 由6-10位数字或这字母组成
$匹配行结尾位置

注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符。

参考:

  1. [正则表达式(一)] 必须包含数字、字母的校验
  2. 密码是6-16位字母加数字的正则表达式和验证手机号码的正则表达式
  3. 必须有数字和字母组合的密码正则表达式
  4. 知道这20个正则表达式,能让你少写1,000行代码
  5. [python] 判断密码强度
  6. 正则表达式简明参考
  7. 密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等

三、【正则表达式系列】零宽断言

零宽断言表示匹配字符的时候再添加一些定位条件,使匹配更精准。

  • \w+(?=ing) 匹配以ing结尾的多个字符(不包括ing)
  • \w+(?!ing) 匹配不是ing结尾的多个字符

  • (?<=re)\w+ 匹配以re开头的多个字符(不包括re)
  • (?<!re)\w+ 匹配不是re开头的多个字符

  • (?<=\s)\d+(?=\s) 匹配两边是空白符的数字,不包括空白符



参考:

  1. 【正则表达式系列】零宽断言
  2. 正则表达式–零宽断言详解
  3. 正则:零宽断言和负向零宽断言
  4. 正则表达式的先行断言(lookahead)和后行断言(lookbehind)
  5. 负向零宽断言
  6. 正则表达式 零宽断言(正向和负向)