1. 程式人生 > >Python 正則表示式(3)匹配手機號

Python 正則表示式(3)匹配手機號

#匹配手機號
import re
text="s127 3628391387 17648372936 183930627 1g82732973 28649703767"
m=re.findall(r"1\d{10}",text)  
if m:
    print m
else:
    print 'not match'
結果:

['17648372936']

匹配手機號,其實就是找出一串連續的數字。更進一步,是11位,以1開頭的數字。

還記得正則第1講裡提到的[]符號嗎?它表示其中任意一個字元。所以要匹配數字,我們可以用[0123456789]

由於它們是連續的字元,有一種簡化的寫法:[0-9]。類似的還有[a-zA-Z]的用法。

還有另一種表示數字的方法:\d

要表示任意長度的數字,就可以用

[0-9]*或者\d*

但要注意的是,*表示的任意長度包括0,也就是沒有數字的空字元也會被匹配出來。一個與*類似的符號+,表示的則是1個或更長。

所以要匹配出所有的數字串,應當用[0-9]+或者\d+

如果要限定長度,就用{}代替+,大括號裡寫上你想要的長度。比如11位的數字:\d{11}

想要再把第一位限定為1,就在前面加上1,後面去掉一位:1\d{10}