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

非贪婪匹配

取消转译
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
浙公网安备 33010602011771号