python手機號碼正則
A. python3校驗一串數字是否是手機號
1、使用字元串的方式
iphone = '12345678910'
if iphone.startswith('1') and len(iphone)==11 and iphone.isdigit():
# 則是正確手機號
2、正則表達式方式
import re
iphone = '12345678910'
if re.match(r'1\d{10}', iphone).group():
# 則是正確手機號
B. python判斷手機號碼是否正確
確定前三位和長度就行,國內都是1開頭,再就是13X、14X、15X、16X、17X、18X、19X、類,符合就行,或者直接調用IP138或者其他一些查詢類網站的介面,前提是得連外網
C. 手機號正則表達式精簡
精簡後:1/^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/
D. python練習現在很多飲件通過手機號注冊。請驗證手機號的正確性,這裏手機號以1開頭,一共11位數
可以使用基於python的正則表達式驗證手機號:
手機號都為11位,所以必須限定匹配的數字的位數,通過$來限定以9位數字結尾,
E. 手機號碼,通用正則表達式。
^[1][358][0-9]{9}$現在只有13、15和18開頭的11位手機號碼。以1開頭,第2位數字為3或5或8,後面接9位數字。
F. 手機號和身份證號的正則表達式怎麼寫
身份證號(18位,最後一位為數字或字母x(大小寫都允許),沒有對出生日期的年月日做限制):
/^\d{17}[\dxX]$/
手機號(11位,第一位為1,第二位可能為3、5、7、8、9):
/^1[35789]\d{9}$/
如果不限制手機號第二位數字的話就是:/1\d{10}/
G. 正則表達式
<main role="main" class="App-main" style="padding-bottom: 46px;">
首發於 Python辦公自動化
無障礙 寫文章
登錄
<article class="Post-Main Post-NormalMain" tabindex="-1" style="box-sizing: border-box; outline: none;">
<header class="Post-Header" style="margin: 0px auto; width: 690px;">
第一小喬喬
進一步,是一步。一起工作進步,廚藝精進,生活美滿。
22 人贊同了該文章
</header>
[圖片上傳失敗...(image-f7fc00-1650193970962)]
match()和search()都只匹配出一個符合條件的字元串,若想要所有,可以使用re.findall()
# 用[]{}判斷密碼是否符合要求 :密碼是由數字和字母組成,並且位數是6-16位
##用split按-或者空白格分割欄位
結果:['ahsb1sssa8', 'jjhd7nhs', ྖnsjhf3', Ɗhh', 'h7', Ǝkjj', 'sfav']
#用sub替換符合條件的關鍵詞, 試試馬賽克臟話(想起農葯不能痛罵隊友的憤怒)
##練練轉義
## findall返回符合表達式的子串
一、正則表達式語法
正則表達式是用匹配或者描述字元串的工具。
用處:
a.判斷字元串是否滿足某個條件---判斷輸入的字元串是否是郵箱/手機號碼。是否是ip地址
b.提取滿足條件的字元串
c.字元串替換
Python中通過re模塊中相應的方法來支持正則表達式的匹配、查找和替換等功能
fullmatch(正則表達式字元串, 字元串) ---> 判斷正則表達式和字元串是否完全匹配
正則表達式字元串: 就是一個字元串,字元串中是正則表達式語法。r'正則表達式'
正則表達式中包含兩個部分,一個是正則語法對應的字元,二個是普通字元
1 .(點)(匹配任意字元)
一個.只匹配一個任意字元
2 w(匹配字母數字下劃線)
一個w匹配一個字元
3 s(匹配任意空白字元)
空白字元: 空格、製表符( )、回車(換行 )等,都輸入空白字元
一個s匹配一個空白字元
4 d(匹配數字字元)
一個不會去匹配一個字元,而是單純的檢測出現的位置是否是單詞邊界
單詞邊界: 字元串開始和結尾、空格、換行、標點符號等,可以將兩個單詞隔開的字元都單詞邊界
6 ^(檢測是否是字元串開頭)
re_str = r'^ddd' # 判斷一個字元串是否是三個數字開頭
7 $(檢測是否是字元串結尾)
8 W(匹配非字母、數字下劃線)
9 S(匹配非空白字元)
10 D(匹配非數字字元)
11 B(檢測是否不是單詞邊界)
12 [] (匹配中括弧中出現的任意一個字元)
一個[]匹配一個字元
[字元集] --> 匹配一個字元,這字元是字元集中的任意一個字元
例如:[abc], [d+]
[字元1-字元2] --> 匹配一個字元,這個字元是Unicode編碼值在字元1到字元2中的任意一個字元;要求字元1的編碼值要小於字元2
例如:[1-9] --> 數字1到9 [a-z] --> 小寫字母 [A-Z] --> 大寫字母
[u0031-u0039] --> 數字1到9
[u4E00-u9fa5] --> 匹配所有的漢字
注意:-在中括弧中,如果放在兩個字元之間表示範圍。
13 [^字元集] (匹配一個不在字元集中的任意字元)
注意:^必須放在中括弧中的最前面才有效
二、正則表達式次數相關符號
from re import fullmatch
1. *(匹配0次或者多次)
字元* --> 字元出現0次或者多次
2. +(匹配一次或者多次)
3. ?(匹配0次或者1一次)
練習:寫一個正則表達式,匹配所有的整數(123, -2334, +9...可以匹配的,012, -023,+0122不能匹配)
{N} --> 匹配N次
{M,N} --> 匹配M到N次
{M,} --> 至少匹配M次
{,N} --> 最多匹配N次
三、分之和分組
import re
1. |(分之)
條件1|條件2 --> 先用條件1去匹配,如果匹配成功就匹配成功。如果條件1匹配失敗,用條件2去匹配。
注意:如果條件1匹配成功就不會用條件2再去匹配
能匹配成功時abc,d和aaa
'abc'+W/H/Y
2. ()(分組)
a.組合(將括弧中的內容作為一個整體進行操作)
b.捕獲 -- 使用帶括弧的正則表達式匹配成功後,只獲取括弧中的內容
c.重復 -- 在正則表達式中可以通過數字來重復前面()中匹配到的結果。數字代表前第幾個分組
a.組合
匹配一個字元串,以數字字母的組合出現3次
b.捕獲
c.重復
3.轉義符號
正則表達式中可以通過在特殊的符號前加,來讓特殊的符號沒有意義
. --> 任意字元 . --> 字元.
注意:在中括弧有特殊功能的符號,只代表符號本身
不管在哪兒都需要轉義
-在[]外面沒有特殊功能,在[]中要表示-本身,就不要放在兩個字元之間
()需要轉義
四、re模塊中的函數
import re
1. compile
compile(正則表達式字元串) --> 將正則表達式字元串轉換成正則表達式對象
2. fullmatch和match
fullmatch(正則表達式字元串, 字元串)
--> 用正則表達式去完全匹配字元串(匹配整個字元串),返回匹配對象(SRE_Match)或者None
match(正則表達式字元串, 字元串)
--> 匹配字元串開頭,返回匹配對象或者None
1.span(group=0) --> 獲取匹配成功的區間(左閉右開區間)
print(result.span(0))
print(result.start(1)) # 獲取匹配到的開始下標
print(result.end(1)) # 獲取匹配到的結束下標後的下標
2.group(group = 0) --> 獲取匹配結果
group()/group(0) --> 獲取正則表達式完全匹配的結果
group(index>0) --> 獲取正則表達式中第group個分組匹配到的結果
3.string --> 獲取被匹配的原字元串
3.search
search(正則表達式, 字元串)
--> 查找字元串中滿足正則表達式的第一個字元串。返回值是匹配對象或者None
練習:使用search匹配出一個字元串中所有的數字字元串'abc34jshd8923jkshd9lkkk890k' --> 34,8923,9,890
4.findall
findall(正則表達式, 字元串) --> 獲取字元串中滿足正則表達式的所有的子串,返回一個列表
注意:如果正在表達式中有分組,取值的時候只取分組中匹配到的結果;
如果有多個分組,會將每個分組匹配到的結果作為一個元祖的元素
5.finditer
finditer(正則表達式, 字元串)
--> 查找所有滿足正則條件的子串,返回值是迭代器,迭代器中的元素是匹配對象
6. split
split(正則表達式,字元串) --> 將字元串按照滿足正則表達式條件的子串進行分割
"""
str1 = 'ahsb1sssa8-jjhd7nhs+90nsjhf3-4hhh7+8kjj-'
result = re.split(r'[-+]', str1)
print(result)
7.sub
sub(正則表達式,repl,字元串) --> 將字元串中滿足正則表達式條件的子串替換成repl。返回替換後的字元串
作業
1. 寫一個正則表達式判斷一個字元串是否是ip地址
規則:一個ip地址由4個數字組成,每個數字之間用.連接。每個數字的大小是0-255 例如:255.189.10.37 正確 256.189.89.9 錯誤
2. 計算一個字元串中所有的數字的和
例如:字元串是:『hello90abc 78sjh12.5』 結果是90+78+12.5 = 180.5
3. 驗證輸入的內容只能是漢字
4. 電話號碼的驗證
二、不定項選擇題
編輯於 2020-12-21 17:02
Python
正則表達式
贊同 22
3 條評論
分享
</article>
[圖片上傳失敗...(image-b1d3-1650193970960)]
懶人必備
[[圖片上傳失敗...(image-645a0f-1650193970961)]
裸睡的豬發表於豬哥的Py...]( https://zhuanlan.hu.com/p/123179571 )
[# 【Python】正則表達式基礎知識
正則表達式(regular expression)是一種處理字元串的工具,功能十分強大。正則表達式使用預定義的特定模式去匹配一類具有共同特徵的字元串,主要用於字元串處理,可以快速,准確地完成復雜…
長弓瑾瑜]( https://zhuanlan.hu.com/p/61981995 )
[[圖片上傳失敗...(image-c617e9-1650193970961)]
123456]( https://zhuanlan.hu.com/p/53589600 )
[# Python之正則表達式入門
前言:此文實際上是本人在慕課學習北京理工大學課程:Python網路爬蟲與信息提取 一課所做的一部分筆記,是作為初學者的入門筆記,自然有許多遺漏或者疏忽,歡迎大家指出。一、正則表達式基…
熱水]( https://zhuanlan.hu.com/p/396371447 )
切換為時間排序
寫下你的評論...
<label class="UploadPicture-wrapper" style="cursor: pointer;"></label>
發布
</main>
<label class="Editable-languageSuggestionsInput Input-wrapper" style="position: relative; display: flex; -webkit-box-align: center; align-items: center; width: 180px; height: 34px; padding: 4px 10px; font-size: 14px; background: rgb(255, 255, 255); border: 1px solid rgb(235, 235, 235); border-radius: 3px; box-sizing: border-box; transition: background 0.2s ease 0s, border 0.2s ease 0s; cursor: pointer;"><input autocomplete="off" role="combobox" aria-expanded="false" aria-autocomplete="list" aria-activedescendant="AutoComplete17-0" id="Popover16-toggle" aria-haspopup="true" aria-owns="Popover16-content" class="Input" placeholder="選擇語言" value="" style="-webkit-box-flex: 1; flex: 1 1 0%; padding: 0px; overflow: hidden; font-family: inherit; font-size: inherit; font-weight: inherit; background: transparent; border: none; resize: none; color: rgb(18, 18, 18); height: 24px; line-height: 24px; cursor: inherit;"></label>
H. python電話號碼正則問題。
手機號的,之前要檢查13開頭,後面要檢查15 也有14 所以乾脆就簡單點1後面10個數字,寫法如下
1\d{10}
至於固定電話的話,找到規律也這么寫就行了以你的這個固定電話為例
86\ 0755\ \d{8}
再擴展一點,區號可能是3位的,電話號碼可能是7位的那麼可以這樣寫
86\ \d{3,4}\ \d{7,8}
I. python的正則表達式
1,正則表達式的一些內容
正則表達式主要是用來匹配文本中需要查找的內容,例如在一片文章中找出電話號碼,就中國的來說11位純數字(不說座機),則使用"d{11}" 意味匹配數字11次,就能准確的查找出文本中的電話號碼. 還有就是在編寫網路爬蟲的時候需要提取很多超鏈接再次進行爬取,使用正則表達式就很方便.直接匹配http開頭就行,當然也可以使用beautifulsoup的select方法.
看下面的程序看看正則表達提取文本中的郵箱:
w 匹配字母,數字,下劃線
+ 匹配1次或者多次
re是正則表達式的工具包,工具包出錯的話在anaconda的命令行輸入"pip install re"安裝,其他的工具包也是如此.
re.compile()中的r示意不是轉義字元,也就是保持後面字元串原樣,findall返回一個列表.下面還有一個版本的程序略有不同.
compile的另一個參數re.IGONORECASE(忽略大小寫),還可以是re.DORALL,多行模式,具體功能也是模糊不清,不過在使用通配符 . 匹配的時候加上re.DOTALL參數能夠匹配換行.如果希望忽略大小寫和多行模式都開啟可以使用re.compile(r'....',re.IGNORECASE|re.DOTALL) .
表達式使用( ),對匹配到的內容分為3組 也就是(w+)出現字母,數字,下劃線一次或多次,這個分組就是下面使用match對象的grou()方法的時候的參數.不給參數和參數0都是得到整個匹配到的內容, 參數1得到第一個括弧匹配到的內容,以此類推參數2和3,如果沒有括弧分組的話使用參數會出現錯誤.
search( )查找和正則式匹配的內容,只匹一次後面的那個找不到.返回一個match對象
w 匹配字母,數字,下劃線
W 匹配字母,數字.下劃線之外的所有字元
d 匹配數字
D 匹配非數字
s 匹配空格,製表符,換行符
S匹配除空格製表符,換行符之外的其他字元
[ .... ]定義自己的匹配,如[aeiouAEIOU ]匹配所有的母音字母,注意不是匹配單詞.
{最少次數,最多次數},例如{3,9} 匹配3-9次,{ ,10}匹配0-10次. 默認為匹配最多次數(貪心匹配),非貪心模式在後面加上問號
? 可選 0次或者1次吧
+匹配1次或多次
*匹配0次或者多次
^ 判斷開頭 ^d 如果待匹配串是數字開頭則返回第一個數字
$判斷結尾 d$ 如果待匹配串是數字結尾則返回最後一個數字
. 通配符,匹配除換行之外的所有字元
d{11} 匹配數字11次
. * 匹配所有字元除 換行
[a-zA-Z0-9._%+-] 小寫和大寫字母、數字、句點、下劃線、百分號、加號或短橫
[a-zA-Z]{2,4} 匹配字母 2 - 4次
J. python正則表達式是什麼
正則表達式(regex)用於探索給定字元串中的固定模式。我們想找到的模式可以是任何東西。可以創建類似於查找電子郵件或手機號碼的模式。還可以創建查找以a開頭、以z結尾的字元串的模式。
創建模式:
使用正則表達式時,首先需要學習的是如何創建模式。接下來將對一些最常用的模式進行逐一介紹。可以想到最簡單的模式是一個簡單的字元串。
pattern = r'times'
string = "It was the best of times, it was the worst of times."
print(len(re.findall(pattern,string)))
注意:
「正則表達式,又稱規則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或re),是計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本」,那使用正則表達式的目的是什麼呢?網路中只寫了兩句話:
1. 給定的字元串是否符合正則表達式的過濾邏輯(稱作「匹配」)。
2. 可以通過正則表達式,從字元串中獲取我們想要的特定部分。
大家可以簡單的理解為兩點:search和match。OK,了解了正則表達式的概念和作用,我們趕緊進入Python的學習吧!正則表達式不是Python獨有的武器,但Python中的正則表達式無疑是最簡單卻又最強大的。