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

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

一、正則簡(jiǎn)介

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

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

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

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

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

四、正則對(duì)象

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

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

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

六、幾個(gè)重要的概念

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

七、習(xí)題

查找連續(xù)的四個(gè)數(shù)字,如:3569
var reg=/dddd/gi;
查找連續(xù)的相同的四個(gè)數(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ù)相的四個(gè)數(shù)字或四個(gè)字符
擴(kuò)展:給你一個(gè)字符串a(chǎn)sdfasdfasdhello
fasdfsadfphpasdfaslkjl,通過(guò)正則表達(dá)式匹配出所有的html標(biāo)簽及內(nèi)容

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

例1:exec的使用方法

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

效果:

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

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

例2:匹配最少有多少個(gè)字符串

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

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

3、字符匹配符
字符匹配符用于匹配某個(gè)或某些字符
[]:在正則表達(dá)式稱之為字符簇(只匹配一個(gè)字符)
[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 :匹配一個(gè)數(shù)字字符。[0-9]
D :匹配一個(gè)非數(shù)字字符。[^0-9]
w :匹配包括下劃線的任何單詞字符。[0-9a-zA-z_]
W :匹配任何非單詞字符。[^0-9a-zA-Z_]
s :匹配任何空白字符 空格 換行 制表位
S :匹配任何非空白字符。
. :匹配除 " " 之外的任何單個(gè)字符
例1:如何匹配任一字符
[. ]
例2:W是否可以匹配到

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

例4:匹配[A-Z]

例5:匹配w

例6:匹配中文字符

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

例2:如何去判斷一個(gè)手機(jī)號(hào)碼是否符合要求(待改正)

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

例3:匹配一個(gè)單詞邊界

例4:匹配一個(gè)非單詞邊界

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

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

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

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

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

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

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

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

贊 (0) 打賞

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞