久久久精品2019免费观看_亚洲国产精品成人久久久_69国产成人综合久久精品91_国产精品久久精品视

一篇文章讀懂正則表達(dá)

一、正則簡介

正則表達(dá)式是一種獨立的語言,可以運用如php、java等編程語言中。
數(shù)據(jù)庫:SQL語言
XML:Xpath
正則:數(shù)據(jù)的檢索
正則表達(dá)式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等
關(guān)鍵詞:
select * from product where t select * from product where title like ‘%手機%’;//模糊匹配
在js中,把要查詢的條件稱之為一種匹配模式
某種:由于模糊查詢,那么其匹配出來是多種多樣。
二、為什么使用正則表達(dá)式

1)信息隱藏
180****2818 135****23234
2)信息過濾
中國政府 中國zf
3)信息采集器
門戶、醫(yī)療,網(wǎng)址、電話
l8073o32818
4)數(shù)據(jù)匹配、數(shù)據(jù)查詢
三、快速入門

查找一個字符串中是否具有數(shù)字“8”

查找一個字符串中是否具有數(shù)字

查找一個字符串中是否具有非數(shù)字

四、正則對象

1、如何創(chuàng)建正則對象
1)隱式創(chuàng)建
數(shù)組:var arr = [元素];
正則:var reg = /正則表達(dá)式/模式;
2)顯示創(chuàng)建(直接實例化)
數(shù)組:var arr = new Array(元素);
正則:var reg = new RegExp(‘正則表達(dá)式’,’模式’);
兩種的實現(xiàn)的功能是一樣的,但是還有區(qū)別的?
語法不同

正則對象在顯示創(chuàng)建時,是寫在字符串中的,所以在使用時,必須對特殊字符進行轉(zhuǎn)義,從此點來看,我們推薦大家使用第一種隱式創(chuàng)建。
2、模式
g:global 全局匹配
i:ignore 忽略,忽略大小寫
五、如何去使用正則對象

RegExp類
test(str) : 判斷字符串中是否有指定模式匹配的字符或字符串 返回Boolbean
exec(str) : 返回指定模式的字符串
String 類
search : 返回指定模式的字符串所在位置
match : 返回指定模式的字符串,返回數(shù)組
replace : 返回指定模式替換后的字符串
split : 返回指定模式分割后的字符串,返回數(shù)組
split(‘|’)
split(‘d’)
示例代碼:

六、幾個重要的概念

1、子表達(dá)式
在正則表達(dá)式中,通過一對小括號()括起來的表達(dá)式,我們稱之為子表達(dá)式
d(d)d
2、捕獲
在js中,當(dāng)通過子表達(dá)式匹配到相應(yīng)的內(nèi)容,系統(tǒng)會自動將其存儲緩存區(qū)中,我們把這個過程稱之為捕獲。
3、反向引用(后向引用)
在正則表達(dá)式中,我們可以通過 (n代表緩存區(qū)域,是一個數(shù)字),獲取到緩存區(qū)中的存儲內(nèi)容
12
例1:匹配dddphpddd模式的字符

七、習(xí)題

查找連續(xù)的四個數(shù)字,如:3569
var reg=/dddd/gi;
查找連續(xù)的相同的四個數(shù)字,如:1111
var reg=/(d)111/gi;
查找數(shù)字,如:1221,3443
var reg=/(d)(d)21/gi;
查找字符,如:AABB,TTMM
var reg=/([a-z])1([a-z])2/gi;
查找連續(xù)相的四個數(shù)字或四個字符
擴展:給你一個字符串a(chǎn)sdfasdfasdhello
fasdfsadfphpasdfaslkjl,通過正則表達(dá)式匹配出所有的html標(biāo)簽及內(nèi)容

八、exec與子表達(dá)式

例1:exec的使用方法

例2:exec與子表達(dá)式

效果:

說明:在我們的正則表達(dá)式中的方法exec與子表達(dá)式配合使用時,首先該程序會執(zhí)行以下過程:
第一次執(zhí)行:
首先在result[0]中顯示匹配到內(nèi)容,第一個子表達(dá)式將追加到數(shù)組result中,如第一個就是result[1],如果存在第二個表達(dá)式,其會把緩存到的內(nèi)容追加到result數(shù)組,成為result[2],后面以此類推。
九、正則表達(dá)式語法

重點:正則三步走
1)確定你要查什么
2)確定查多少
3)從哪里查
正則表達(dá)式是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。正則表達(dá)式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。
普通字符:a b c 1 2 3
特殊字符:d w D
1、元字符中限定符
限定符可以指定正則表達(dá)式的一個給定組件必須要出現(xiàn)多少次才能滿足匹配(三步走中的第二步)
* : 匹配0到多
+ : 匹配1到多
? : 匹配0或1
{n} : 匹配n次
{n,} : 最少匹配n次
{n,m} :最少匹配n次,最多匹配m次
在js正則表達(dá)式中,*,+,?可以采用{}的形式表示或代替
* :{0,}
+ :{1,}
? :{0,1}
例1:匹配已知數(shù)目的字符串

例2:匹配最少有多少個字符串

例3:匹配某一數(shù)量范圍內(nèi)的字符串

2、貪婪模式與非貪婪模式
觀察以上例2與例3發(fā)現(xiàn),當(dāng)我們?nèi)テヅ淠骋粋€數(shù)量返回內(nèi)的數(shù)據(jù),正則默認(rèn)會匹配最多的那個結(jié)果,我們把這種效果稱之為
“貪婪匹配”,默認(rèn)情況正則表達(dá)式采用的就是貪婪匹配模式
非貪婪匹配:匹配最少的那個情況,我們稱之為非貪婪匹配,可以采用?的形式實現(xiàn)。
非貪婪匹配示例代碼:

3、字符匹配符
字符匹配符用于匹配某個或某些字符
[]:在正則表達(dá)式稱之為字符簇(只匹配一個字符)
[a-z]:匹配a-z中的任一字符
[A-Z] :匹配A-Z中的任一字符
[0-9] :匹配數(shù)字0-數(shù)字9中的任一數(shù)字(d)
[0-9a-z] : 匹配數(shù)字0-數(shù)字9或a-z中任一字符
[0-9a-zA-Z] : 匹配數(shù)字0-數(shù)字9或a-z或A-Z中的任一字符
[abcd] :匹配字符a或字符b或字符c或字符d
[1234] :匹配數(shù)字1或數(shù)字2或數(shù)字3或數(shù)字4、
^ : 上檔鍵,在正則中表示取反(僅限于字符簇)
[^a-z] :匹配除a-z中的任一字符
[^0-9] :匹配除0-9中的任一字符
[^abcd] :匹配除字符a或字符b或字符c或字符d以外的任一字符
d :匹配一個數(shù)字字符。[0-9]
D :匹配一個非數(shù)字字符。[^0-9]
w :匹配包括下劃線的任何單詞字符。[0-9a-zA-z_]
W :匹配任何非單詞字符。[^0-9a-zA-Z_]
s :匹配任何空白字符 空格 換行 制表位
S :匹配任何非空白字符。
. :匹配除 " " 之外的任何單個字符
例1:如何匹配任一字符
[. ]
例2:W是否可以匹配到

例3:通過[a-z]匹配任一a-z的字符

例4:匹配[A-Z]

例5:匹配w

例6:匹配中文字符

擴展:如何匹配所有的中文字符
第一種:u5hs
第二種:數(shù)據(jù)字典
數(shù)據(jù)字典文件(中文字符)
通過遍歷篩選的方式進行查詢
txt
4、定位符
例1:如何去判斷一個人的年齡是否符合要求(01-99)

例2:如何去判斷一個手機號碼是否符合要求(待改正)

引入概念:
定位符可以將一個正則表達(dá)式固定在一行的開始或結(jié)束。也可以創(chuàng)建只在單詞內(nèi)或只在單詞的開始或結(jié)尾處出現(xiàn)的正則表達(dá)式。
^ 匹配輸入字符串的開始位置
$ 匹配輸入字符串的結(jié)束位置
 匹配一個單詞邊界 開始 空格 結(jié)尾
B 匹配非單詞邊界
例2:改進后的手機驗證正則表達(dá)式

例3:匹配一個單詞邊界

例4:匹配一個非單詞邊界

5、轉(zhuǎn)義符
定義一個轉(zhuǎn)義符
/ . ( ) { } ‘ “ [ ] * ? + ^ $ –
在我剛才講過的有特殊意思的字符全部需要轉(zhuǎn)義
示例代碼:

6、選擇匹配符
在正則表達(dá)式可以采用|(或的意思)代表選擇匹配符
例1:

7、特殊用法
預(yù)查
(?=) :正向預(yù)查
(?!) : 反向預(yù)查
查詢結(jié)果,但不捕獲
(?:)
例1:正向預(yù)查

例2:負(fù)向預(yù)查

例3:查詢結(jié)果,但不捕獲

8、擴展:結(jié)巴程序
我…我是是..一個個…帥帥帥帥…哥!;
我是一個帥哥!
思路:
1、先把省略號去除掉,變成
我我是是一個個帥帥帥帥哥!
用到的知識:
正則知識點:.+
替換:replace
2、去除掉重復(fù)的數(shù)據(jù)
我我是是一個個帥帥帥帥哥!
用到的知識:
正則:
通過點號匹配中文字符
通過子表達(dá)式捕獲數(shù)據(jù)
/(.)1*/gi
替換:replace
難點:在replace中我要把匹配到數(shù)據(jù)替換成什么?
replace第二個參數(shù)可以直接引用緩存區(qū)中的內(nèi)容,引用方式$n(n代表數(shù)字1到n)區(qū)域名

都看到這里就順手關(guān)注下吧~~~~ -_-

未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » 一篇文章讀懂正則表達(dá)

贊 (0) 打賞

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞