Python正则表达式

  • Post author:
  • Post category: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

    ↩︎



版权声明:本文为weixin_44144366原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。