正则表达式

1.前戏
 	需求:编写代码校验用户输入的手机号是否合法
 		常见 13 15 18 19
 	纯python代码逻辑实现
phone = input('请输入您的手机号>>>:').strip()
if phone.isdigit():
    if len(phone) == 11:
        if phone.startswith('13') or phone.startswith('15') or phone.startswith('18') or phone.startswith('19'):
            print(int(phone))
        else:
            print('手机号开头不对')
    else:
        print('手机号必须是11位数')
else:
    print('手机号必须是纯数字')
	
	正则表达式
import re
phone = input('请输入你个手机号>>>:').strip()
if re.match('^[13|15|18|19][0-9]{9}', phone):
    print(phone)
else:
    print('输入不合法')

正则表达式之字符组

正则表达式线上测试网址
http://tool.chinaz.com/regex/
字符组在没有量词修饰的情况一次只会针对一个数据值

正则 说明 全称
[0-9] 匹配到0到9之间的任意一个数字(包括0和9) [0123456789]
[A-Z] 匹配A到Z之间的任意一个字母(包括A和Z) A-Z所有大写字母
[a-z] 匹配a到z之间的任意一个字母(包括a和z) a-z小写字母
[0-9a-zA-Z] 数字、小写字母、大写字母都可以

正则表达式之特殊符号

特殊符号在没有量词修饰的情况一个符号一次只会针对一个数据值

编号 方式 说明
1. . 匹配除换行符以为的任意字符
2. \w 匹配字母或数字或下划线
3. \W 匹配非字母或数字或下划线
4. \d 匹配数字
5. ^ 匹配字符串的开头
6. $ 匹配字符串的结尾
7. a|b 匹配字符a或者字符b
8. () 给正则表达式分组 不影响正则表达式的匹配
9. [] 匹配字符组的字符
10. [^] 匹配除了字符组中的字符的所有字符

正则表达式之量词

在正则表达式中所有的量词默认都是贪婪匹配(尽可能多的)

编号 方式 说明
1. * 重复零次或更多次(默认就是尽可能多)
2. + 重复一次或更多次(默认就是尽可能多)
3. ? 重复零次或一次(默认就是一次)
4. 重复n次
5. 重复n次或更多次
6. 重复n到m次

贪婪匹配与非贪婪匹配

待匹配的文本:<script>alert(123)</script>
	1.正则表达式:<.*>  # 贪婪匹配 有多少就要多少尽可能的多要
	2.正则表达式:<.*?>  # 非贪婪匹配 尽可能的少要

所有的量词默认都是贪婪匹配 但是如果在量词后面紧跟了一个问号
那么就是会变成非贪婪匹配
小技巧:以后我们在使用贪婪匹配或者非贪婪匹配的时候一般使用.*或者.*?
并且结束的标志有上述左右两个添加的表达式决定

贪婪匹配
image

非贪婪匹配
image

取消转译

1.正则表达式中取消斜杠与字符的特殊含义 就是在斜杠前面加斜杠
	\\n			\n
	\\\\n		\\n
2.在python中有更加简单方便的写法
	r'\n'
	r'\\n'

正则表达式实战

编写校验用户手机号的正则
	0?(13|14|15|17|18|19)[0-9]{9}
编写校验用户身份证的正则
	\d{17}[\d|x]|\d{15}
编写校验用户邮箱的正则
	\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}
编写校验用户qq好的正则
	[1-9]([0-9]{5,11})

常见的正则只需百度搜索就可以了 我们需要的就是能看懂别人写的 以便后续修改
 posted on 2022-07-19 19:46  Joker_Ly  阅读(80)  评论(0)    收藏  举报