正则表达式练习 | 学习笔记

简介: 快速学习 正则表达式练习

开发者学堂课程【Python入门 2020年版正则表达式练习】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10449


正则表达式练习


目录:

一、小练习

二、用户名匹配

三、匹配邮箱

四、匹配手机号

五、匹配身份证号

六、匹配 URL 地址

七、匹配 QQ

八、匹配微信号

九、匹配车牌号


一、小练习

新建 pythonname 10-练习.py 输入代码:

判断用户输入的内容是否是数字,如果是数字,转换成为数字类型。

num = input(‘请输入一段数字:’)

printfloatnum))

运行,之后在运行框里输入23,则可以显示。若输入 hello,则将会报错。

输入代码:

Import re

# \d+ \.?  \d+

# 判断用户输入的内容是否是数字,如果是数字转换类型

num = input(‘请输入一段数字:’)

if num.isdigit()://进行判断

print(floatnum))

else:

print(‘不是一个数字’)

这样写会有问题,我们输入整数是没问题的,但是输入小数,比如说3.14,它会认为这不是一个数字。

之后输入代码:

num = input(‘请输入一段数字:’)

if re.fullmatch(r[0-9.]+, num):

# [0-9. ]+ 45.46.78.//出现一次或多次。

print(‘是一个数字’)

printfloatnum))

else:

print(‘不是一个数字’)

运行,在运行框输入4.5.6,将会报错。

将一行代码改成:

if re.fullmatch(r\d+(\.?\d+)?, num):

# 14 .(.45465)

出现一次或多次,运行,输入3.14,将会出现是一个数字;输入3.14.3,将会出现不是一个数字。(只能用 fullmatch不能用 match


二、用户名匹配:

规则:

#以非数字开头,后面有字母数字下划线:_-组成的长度414位的字符串

r '^\D[a-z0-94-Z_I-]{3,13}'

然后运行,演示结果:

In[20]re.match(r'^\D[a-z0-9A-Z_\-](3,13)','j3p')In[21]:x=re.match(r'^\D[a-z0-9A-Z_\-](3,13)','j3p')

In[22]x

In[23]print(x)

None//没有结果,是空的,需要出现3-13

In[24]x= re.match(r'^\D[a-z0-9A-Z_\-](3,13)','j3pqtr')

In[25]x

Out[25]: <re.Match object; span=(0, 6), match='j3pqtr

In[26]:

由数字、大小写字母、下划线_和中横线 组成,长度414位,并且不能以数字开头。

# r’^\D[a-z0-9A-Z_\-]{3,13},  sH_8’  

解释:

以非数字开头,后面有 字母数字_-组成的长度414位的字符串。

运行之后输入re.match(r^\D[a-z0-9A-Z_\-]{3,13},j3p)匹配不到结果。

X = re.match(r^\D[a-z0-9A-Z_\-]{3,13},j3p)

输出的 x 是没有结果的。

Print(X)输出的结果是 None。出现次数在3

13次,这里出现2次就不行了

x = re.match(r'^ID[a-z0-9A-Z_l-]{3,13}', 'j3pqtr ' )

这个时候输出 x 就会有东西了。

<re. Match object; span=(o,6), match='j3pqtr'>


三、匹配邮箱

匹配格式是灵活的。

r^([A-Za-z0-9_\-\.])+@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$

[A-Za-z0-9_\-\.]开头,以[A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4}结尾。

可以理解为 fullmatch

# a.jiang@t.p.q.cn

反斜线表示标点符号。

邮箱的正则表达式有很多,需要自己看什么样是合法的。


四、匹配手机号

只能匹配一部分手机号。

# r^((13[0-9])|(14[5|7])|(15[0-3]|[5-9]))|(18[0,5-9]))\d{8}$

# 130 ~ 139都支持

# 145 ~ 147 也支持

150 151 152 153 155~159

185~189也支持。

号段已经很过时了,这是比较老的号段了,只能支持这些老的号段进行匹配。

因为现在开了很多新的号段,东西不能注册。因为正则表达式没有验证,没有把199等新号段加进来,加进来后就可以使用了。如果加进去就会告诉你手机号是不合法的。

号段太多,每个都要加,更新比较困难,所以使用正则表达式验证手机号就少了。现在基本都用短信验证码验证。

不管怎么写,号段开的越来越多,正则表达式接受的也多,越来越复杂,所以现在都用验证码,保密性也高。

$表示以什么结尾,#表示以什么结尾。

支付宝验证码等暴力破解是不可能的。


五、匹配身份证号

不可能开一个新的号段。

r^[1-9]\d{5}(18|19|20|)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$’

身份证号第一位是19的数字,后面紧跟的是数字,包含09的数字出现五次

解释:前六位1xxxxx ~ 9xxxxxx(地区)

前面表示地区,省市直辖市。

比如:

42开头湖北省

06襄阳市

第七位开始表示出生年月日

年份:1800~2099

月份:01~09 | 10|11|12  

日:01~29  

除去1020号或者加上 |10|20|30|31

这个地方没有办法判断,1999229号会被允许,但是2月没有29号,如果写错了也不会被注意到,所以此时需要注意

最后四位:

都是09

比如:

734 X

最后一位是 X 的需要注意。

举例:

420606某省某市  2019年   09月   23日 398 8

身份证倒数第二位表示性别,偶数为女,奇数为男。


六、匹配 URL 地址

代码如下:

r'((ht/f)tps?):\/V/([ \wl-]+(\.[ \wl\-]+)*\/)*[\w\-]+(\.[ \w\-]+)*\/?(\?([ \w\-\.,@?^=&:\/~


七、匹配 QQ

代码如下:

r'^[1-9][0-9]{4,10}$'7


八、匹配微信号

代码如下:

r"^[ a-zA-Z]([-_a-zA-Z0-9]{5,19})+$'


九、匹配车牌号

具体代码如下:

# r'^[京津沪渝冀豫云辽黑湘皖鲁新苏浙帻鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$

第一部分地区

第二部分:字母

第三部分:数字

出现4

能够匹配一些车牌号。

相关文章
|
JavaScript 前端开发
带你读《现代Javascript高级教程》二十四、正则表达式的常见问题与练习(1)
带你读《现代Javascript高级教程》二十四、正则表达式的常见问题与练习(1)
143 2
|
JavaScript 前端开发
带你读《现代Javascript高级教程》二十四、正则表达式的常见问题与练习(2)
带你读《现代Javascript高级教程》二十四、正则表达式的常见问题与练习(2)
132 2
|
JavaScript 前端开发
《现代Javascript高级教程》正则表达式的常见问题与练习
正则表达式的常见问题与练习 正则表达式是面试中经常被提及的主题之一,但很多人在面试中对于正则表达式的问题常常感到困惑。在本节中,我将通过一些常见问题和练习题目来帮助你更好地理解和掌握正则表达式的技巧。
133 0
java202303java学习笔记第二十七天-正则表达式之3
java202303java学习笔记第二十七天-正则表达式之3
71 0
java202303java学习笔记第二十八天-正则表达式基本练习2
java202303java学习笔记第二十八天-正则表达式基本练习2
116 0
java202303java学习笔记第二十八天-正则表达式基本练习1
java202303java学习笔记第二十八天-正则表达式基本练习1
146 0
java202303java学习笔记第二十八天-正则表达式基本练习3 原
java202303java学习笔记第二十八天-正则表达式基本练习3 原
78 0
java202303java学习笔记第二十七天-正则表达式基本练习1
java202303java学习笔记第二十七天-正则表达式基本练习1
110 0
java202303java学习笔记第二十七天-正则表达式之2
java202303java学习笔记第二十七天-正则表达式之2
149 0
java202303java学习笔记第二十七天-正则表达式之1
java202303java学习笔记第二十七天-正则表达式之1
171 0