正则表达式广泛用于前端,移动端,以及服务端,用来做字符串的规则校验,校验是否合法
- \d可以匹配一个数字,\w可以匹配一个字母或数字
1 | '00\d'可以匹配'007',但无法匹配'00A'; |
.
匹配任意字符*
表示任意个字符,包括0个,+
表示至少一个字符,?
表示0个或1个字符,{n}
表示n个字符,{n-m}
表示n-m个字符[]
表示范围1
2
3
4
5
6
7
8[0-9a-zA-Z\_]可以匹配一个数字,字母或者下划线
[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等
```
* `A|B`可以匹配A或B,所以`(P|p)ython`可以匹配`'Python'`或者`'python'`
* ^表示行的开头,^\d表示必须以数字开头。
* $表示行的结束,\d$表示必须以数字结束。
## python中的使用
import re
if re.match(r’^\d{3}-\d{3,8}$’,’010-55’):
print ‘ok’
else:
print ‘not match’1
2
无法识别连续的空格,用正则表达式试试:
re.split(r’\s+’, ‘a b c’)
[‘a’, ‘b’, ‘c’]
1
2
无论多少个空格都可以正常分割。加入,试试re.split(r’[\s\,]+’, ‘a,b, c d’)
[‘a’, ‘b’, ‘c’, ‘d’]
1 再加入;试试:re.split(r’[\s\,\;]+’, ‘a,b;; c d’)
[‘a’, ‘b’, ‘c’, ‘d’]
1
2 **分组功能**
加上()用来做分组的拆分m = re.match(r’^(\d{3})-(\d{3,8})$’, ‘010-12345’)
m.group(1)
‘010’
m.group(2)
‘12345’
1
2
3
**预编译**
如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式
import re
编译:
re_telephone = re.compile(r’^(\d{3})-(\d{3,8})$’)
使用:
re_telephone.match(‘010-12345’).groups()
执行结果:
(‘010’, ‘12345’)
```