Python正则表达式

QQ号表达式:
分析:
1、首先扣扣号开头不能为0;
2、QQ号必须大于5且小于11(或12,13,QQ号最长位);
则正则表达式为: “[1-9]\d{4,10}"
解析:
[1-9]为第一个数(第一个数不为0);
\d:第一’‘为转义字符,’\d’为产生[0-9]的数字(第二位往后数字任意);
{4,10}表示至少4次最多10次(因为[1-9]占1位,剩下4或10位,这里默认扣扣号最短5位,最长10位);
手机号表达式:
分析:
1、手机号位数为11位;
2、开头为1,第二位为3或4或5或8;
则表达式为: ”1[3458]\d{9}
解析:
1:开头必须为1;
[3458]:第二位;
\d: 第一个为转义字符,’\d’为产生任意数字;
{9}:恰好出现9次;
扩展:写出手机号表达式,且后5位相同;
”1[3458]\d{4}(\d)\1{4}"
解析:
1:开头必须为1;
[3458]:第二位;
“\d{4}”:产生[0-9]的数字恰好出现4次(由于前面占2位,后面重复5次,11减去7,还剩4位);
“(\d)\1{4}”:首先圆括号()表示组的意思,’\1’中的1表示的是第一组,第一个‘’‘表示转义,{4}出现4次,产生一个数最为一个组,将这组元素再重复4次; 注:(组:(\d)\1(\d)\2中的\2表示第二组);
邮箱表达式:
xxxx@xxx.com/cn/com.cn
eg:haha@163.com; ha_ha@alibaba.com.cn; ha-ha@sina.com;123456789@qq.com 等;
分析:
1、@符号前面的可以为字母,数字,下划线,中划线,或’.’;
2、@后面的可以是xxx.com、xxx.cn、xxx.com.cn;
表达式:”[\w-\.]+@([\w]+\.)+[a-z]{2,3}"
解析:
[\w-\.]: “\w"为产生单个字符(a-z或A-Z或[0-9]),‘-’可能出现为中划线,“\.“表示可能出现’.’ ;
’+‘表示’[]‘里面出现一次或多次;
’@‘:为邮箱里面的@符号;
([\w]+\.)+:首先[\w]+表示单个字符(a-z或A-Z或[0-9])出现一次或多次(如以上邮箱:@ 163,@alibaba,@sina,@qq,分别出现3,7,4,2次); ([\w]+\.)+:将()里面看成一组,()+这组出现一次或多次( 为什么加上’.’?? ,因为后缀有两种格式:xxx@xxx.com或者xxx@xxx.com.cn,将(xxx.)和(com.)可看成相同格式的组);
[a-z]{2,3}: 产生后缀.com或.cn,所以出现2到3次;
用户名表达式:
题目:必须以字母开头,长度在10位以内
表达式:”[a-zA-z]\w{0,9}”
解析:
[a-zA-Z]:用户名的第一位数为字母,[a-zA-z]表示产生这个a-z或A-Z范围的字母;
\w{0,9}: \w产生单个字符 (a-z或A-Z或[0-9]),{0,9}:为至少0次最多9次;
密码表达式:
题目:任意字符,6~16位
表达式:".{6,16}"
解析:
‘.’ : 为产生任意字符;
{6,16}:至少6位,最多16位;
import re

password = str(input())

def lenOK(pwd):
if(len(pwd)>=8):
return True
else:
print(“WARNING: The password should be at least 8 characters.”)
return False

def numberOK(pwd):
pattern = re.compile(’[0-9]+’)
match = pattern.findall(pwd)
if match:
return True
else:
print(“WARNING: The password should include at least 1 number.”)
return False

def upperOK(pwd):
pattern = re.compile(’[A-Z]+’)
match = pattern.findall(pwd)
if match:
return True
else:
print(“WARNING: The password should include at least 1 upper character.”)
return False

def lowerOK(pwd):
pattern = re.compile(’[a-z]+’)
match = pattern.findall(pwd)
if match:
return True
else:
print(“WARNING: The password should include at least 1 lower character.”)
return False

def symbolOK(pwd):
pattern = re.compile(’1+’)
match = pattern.findall(pwd)
if match:
return True
else:
print(“WARNING: The password should start with numbers or characters.”)
return False

def checkpwd(pwd):
check = lenOK(pwd) and numberOK(pwd) and upperOK(pwd) and lowerOK(pwd) and symbolOK(pwd)
if (check):
print(“The password is legal.”)
else:
print(check)

checkpwd(password)


  1. a-z0-9A-Z ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值