正則表達(dá)式詳析+常用示例
一、正則的含義
正則表達(dá)式就是用來(lái)操作字符串的一種邏輯公式
二、正則表達(dá)式的應(yīng)用場(chǎng)景
- 數(shù)據(jù)分析時(shí)數(shù)據(jù)獲取的文本篩選
- 進(jìn)行爬蟲(chóng)時(shí),網(wǎng)頁(yè)數(shù)據(jù)的匹配
- 寫前端代碼的時(shí)候,用戶輸入數(shù)據(jù)的驗(yàn)證
- 測(cè)試人員對(duì)請(qǐng)求結(jié)果的數(shù)據(jù)驗(yàn)證
- 批量文本編輯,比如
Sublime Text
或nodepad++
、EditPlus
等記事本軟件全都支持正則表達(dá)式的使用
三、常用的格式校驗(yàn)
- 郵箱驗(yàn)證
- IP地址驗(yàn)證
- 電話號(hào)碼驗(yàn)證
- 身份證號(hào)碼驗(yàn)證
- 密碼強(qiáng)度驗(yàn)證
- 網(wǎng)址驗(yàn)證
- 漢字驗(yàn)證
[\u4e00-\u9fa5]
- ......
- 凡是有一定規(guī)律的,批量的數(shù)據(jù)獲取,都可以使用正則表達(dá)式來(lái)完成
四、元字符
字符 | 說(shuō)明 |
---|---|
. | 代表的是換行符以外的任意字符。 換行符是:(不同的操作系統(tǒng)有不同的換行符) \n \r\n |
\w | 匹配字母、數(shù)字、下劃線、漢字的一個(gè)字符 |
\s | 匹配任意的空白符 |
\d | 匹配數(shù)字 |
^ | 匹配字符串的開(kāi)始 |
$ | 匹配字符串的結(jié)束 |
五、反義代碼
反義代碼的意思就是與元字符表示相反的代碼
- \W 匹配的任意 不是 字母、數(shù)字、下劃線、漢字 的字符
- \S 匹配任意 不是 空白符的字符
- \D 匹配任意 不是 數(shù)字的字符
六、限定符
符號(hào) | 說(shuō)明 |
* | 代表的重復(fù)0次或者是多次 |
+ | 代表的重復(fù)1次或者是多次 |
? | 代表的是重復(fù)0次或者是1次 |
{n} | 重復(fù)n次,舉例:{3}指的就是重復(fù)3次 |
{n,} | 重復(fù)n次或者更多次數(shù) |
{n,m} | 重復(fù)n次到m次,所以這里m一般要比n |
七、分組匹配
findall / search/match
區(qū)別¶findall
是查找所有的search
匹配第一個(gè)match
匹配開(kāi)頭的
八、貪婪與非貪婪
- 貪婪的意思是盡可能多的匹配
- 非貪婪的意思就是盡可能少的匹配
- 非貪婪操作符是問(wèn)號(hào):'符號(hào)?'
- ?號(hào)代表的是重復(fù)0次或者是1次,再加一個(gè)問(wèn)號(hào),代表的是非貪婪操作,那么最后就只匹配0次
分支條件匹配:
使用 | 來(lái)分隔開(kāi)不同的正則表達(dá)式,代表著 條件1 或 條件2 或條件3 ......
九、零寬斷言
- 匹配"正則表達(dá)式reg"前邊的位置 (?=reg)
- 匹配"正則表達(dá)式reg"后邊的位置 (?<=reg)
- 匹配后邊跟的不是"正則表達(dá)式reg"的位置 (?!reg)
- 匹配前邊不是"正則表達(dá)式reg"的位置 (?<!reg)
十、常用的實(shí)用正則表達(dá)式
- 輸入零和非零開(kāi)頭的數(shù)字:"^(0|[1-9][0-9]*)$"。
- 輸入有兩位小數(shù)的正實(shí)數(shù):"^[0-9]+(.[0-9]{2})?$"。
- 輸入有1~3位小數(shù)的正實(shí)數(shù):"^[0-9]+(.[0-9]{1,3})?$"。
- 輸入非零的正整數(shù):"^"+?[1-9][0-9]*$"。
- 輸入非零的負(fù)整數(shù):"^"-[1-9][]0-9"*$。
- 輸入長(zhǎng)度為3的字符:"^.{3}$"。
- 輸入由26個(gè)英文字母組成的字符串:"^[A-Za-z]+$"。
- 輸入由26個(gè)大寫英文字母組成的字符串:"^[A-Z]+$"。
- 輸入由26個(gè)小寫英文字母組成的字符串:"^[a-z]+$"。
- 輸入由數(shù)字和26個(gè)英文字母組成的字符串:"^[A-Za-z0-9]+$"。
- 輸入由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串:"^"w+$"。
- 驗(yàn)證用戶密碼:"^[a-zA-Z]"w{5,17}$"正確格式為:以字母開(kāi)頭,長(zhǎng)度在6~18之間,只能包含字符、數(shù)字和下劃線。
- 驗(yàn)證是否含有^%&’,;=?$""等字符:"[^%&’,;=?$"x22]+"。
- 只能輸入漢字:"^["u4e00-"u9fa5]{0,}$"
- 驗(yàn)證Email地址:"^"w+([-+.]"w+)*@"w+([-.]"w+)*"."w+([-.]"w+)*$"。
- 驗(yàn)證InternetURL:"^http://(["w-]+".)+["w-]+(/["w-./?%&=]*)?$"。
- 驗(yàn)證電話號(hào)碼:"^("("d{3,4}-)|"d{3.4}-)?"d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
- 驗(yàn)證身份證號(hào)(15位或18位數(shù)字):"^"d{15}|"d{18}$"。
- 驗(yàn)證一年的12個(gè)月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
- 驗(yàn)證一個(gè)月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。
到此這篇關(guān)于正則表達(dá)式詳析+常用示例的文章就介紹到這了,更多相關(guān)正則表達(dá)式 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 正則表達(dá)式學(xué)習(xí)小結(jié)
這篇文章主要介紹了python 正則表達(dá)式學(xué)習(xí)小結(jié)的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06js正則表達(dá)式 匹配兩個(gè)特定字符間的內(nèi)容示例
今天小編就為大家分享一篇js正則表達(dá)式 匹配兩個(gè)特定字符間的內(nèi)容示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07正則表達(dá)式替換table表格中的樣式與空標(biāo)記(保留rowspan與colspan)
最近幾天的勞動(dòng)成果,用正則表達(dá)式去除表格中的樣式與class方便后臺(tái)編輯的操作,在編寫過(guò)程中不斷進(jìn)步,后續(xù)將不定時(shí)更新,需要的朋友可以參考下2020-04-04eregi_replace與preg_replace 函數(shù)代碼的用法比較
eregi_replace與preg_replace 函數(shù)代碼的用法比較...2007-03-03正則表達(dá)式簡(jiǎn)介及在C++11中的簡(jiǎn)單使用教程
正則表達(dá)式(regular expression)是計(jì)算機(jī)科學(xué)中的一個(gè)概念,又稱規(guī)則表達(dá)式,通常簡(jiǎn)寫為regex、regexp、RE、regexps、regexes、regexen。接下來(lái)通過(guò)本文給大家介紹正則表達(dá)式簡(jiǎn)介及在C++11中的簡(jiǎn)單使用教程,一起通過(guò)本文學(xué)習(xí)吧2017-02-02正則表達(dá)式(RegExp)判斷文本框中是否包含特殊符號(hào)
有時(shí),我們希望判斷文本框中用戶輸入的字符是否含有特殊符號(hào)(*/#$@),就像用戶注冊(cè)時(shí)密碼框的填寫。下面小編給大家分享一個(gè)demo,感興趣的朋友一起看看吧2019-10-10