一、关于邮箱的常用正则表达式:
一个匹配所有邮箱格式的代码:
#-*- 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!')
参考:
- Python正则表达式验证邮箱
- 正则表达式-邮箱有效性验证
- 通用邮箱正则表达式
- 常用正则表达式—邮箱(Email)
- 匹配Email地址的正则表达式
- Python实现正则表达式匹配任意的邮箱
- 正则表达式-廖雪峰
二、关于密码的常用正则表达式:
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字符。
参考:
- [正则表达式(一)] 必须包含数字、字母的校验
- 密码是6-16位字母加数字的正则表达式和验证手机号码的正则表达式
- 必须有数字和字母组合的密码正则表达式
- 知道这20个正则表达式,能让你少写1,000行代码
- [python] 判断密码强度
- 正则表达式简明参考
- 密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等
三、【正则表达式系列】零宽断言
零宽断言表示匹配字符的时候再添加一些定位条件,使匹配更精准。
\w+(?=ing)
匹配以ing
结尾的多个字符(不包括ing)\w+(?!ing)
匹配不是以ing
结尾的多个字符-
(?<=re)\w+
匹配以re
开头的多个字符(不包括re)(?<!re)\w+
匹配不是以re
开头的多个字符-
(?<=\s)\d+(?=\s)
匹配两边是空白符的数字,不包括空白符