如何快速學(xué)習(xí)正則表達(dá)式
正則表達(dá)式概念
正則表達(dá)式,又稱正規(guī)表示法、常規(guī)表示法(英語(yǔ):Regular Expression,在代碼中常簡(jiǎn)寫為regex、regexp或RE),計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式使用單個(gè)字符串來(lái)描述、匹配一系列符合某個(gè)句法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式的文本。
在日常工作中,我們經(jīng)常寫正則表達(dá)式,比如在表單中經(jīng)常用來(lái)驗(yàn)證用戶輸入的格式是否正確,我們就會(huì)用到正則表達(dá)式;可以把正則表達(dá)式看做是可以描述問(wèn)題的語(yǔ)言,它就是專門為模式匹配而設(shè)計(jì)的
-------------------------------------------------------------------------------
正則表達(dá)式的語(yǔ)法
可以簡(jiǎn)單粗暴得把正則表達(dá)式理解為查找東西,舉個(gè)例子:要在"Hello World"中找到"world"這個(gè)單詞,先用直白的語(yǔ)言來(lái)描述就是查找"從w開(kāi)頭到d結(jié)束的字母組合",使用正則來(lái)描述就是\bw\w*d\b,這個(gè)就是模式字符串,它由元字符和字面量字符組成
•常見(jiàn)的元字符如下:
•正則表達(dá)式中的旗標(biāo)
•正則表達(dá)式中的轉(zhuǎn)義字符
JS中的正則表達(dá)式
•兩種生成方式,
舉例:匹配0-9有沒(méi)有出現(xiàn)
1、通過(guò)RegExp var reg=new RegExp('^[0-9]','g');
2、通過(guò)表達(dá)式字面量 var reg=/^[0-9]/g;
•兩種常用的方法
test()、exec()
1、test方法:如果輸入字符串與模式相匹配,test就返回真,沒(méi)有則返回假
2、exec方法:如果輸入字符串與模式匹配,則返回一個(gè)數(shù)組,沒(méi)有匹配就返回null
/*test()方法,匹配是否有出現(xiàn)0-9*/ var reg1=/^[0-9]/; reg1.test('There is no number'); //返回結(jié)果為false /*exec()方法,匹配句子里面的單詞,兩個(gè)單詞一組*/ /*沒(méi)有設(shè)置全局旗標(biāo)*/ var reg2=/(\w+)\s(\w+)/; reg2.test('There is no number'); //返回結(jié)果['There is','There','is'] //第0個(gè)元素是匹配的字符串,后面兩個(gè)元素分別是分組引用的子字符串 /*設(shè)置全局旗標(biāo)*/ var reg3=/(\w+)\s(\w+)/g; reg3.test('There is no number'); //設(shè)置了全局旗標(biāo)的話,exec()會(huì)循環(huán)尋找 //第一次查找結(jié)果['There is','There','is'],第二次結(jié)果['no number','no','number'],第三次結(jié)果null exec()方法如果設(shè)置了全局旗標(biāo),在循環(huán)中使用必須要手動(dòng)設(shè)置其reg.lastIndex = 0;,否則它會(huì)間隔匹配
--------------------------------------------------------------------------------
字符串對(duì)象與正則表達(dá)式
•在string對(duì)象中有不少以正則表達(dá)式對(duì)象作為參數(shù)的方法
屬性 | 說(shuō)明 |
---|---|
match(regexp) | 返回正則表達(dá)式regexp的匹配結(jié)果 |
replace(searchValue,replaceValue) | 將searchValue(正則表達(dá)式或是字符串值) 替換為replaceValue,并返回響應(yīng)的字符串 |
search(regexp) | 返回正則表達(dá)式regexp匹配位置的下標(biāo),沒(méi)有匹配就返回-1 |
split(separator,limit) | 通過(guò)參數(shù)separator(字符串或是正則表達(dá)式) 對(duì)字符串進(jìn)行分割,并返回一個(gè)字符串?dāng)?shù)組 |
•match方法會(huì)返回元素與模式相匹配的字符串的數(shù)組,設(shè)置全局旗標(biāo)時(shí),會(huì)返回所有與模式相匹配的字符串?dāng)?shù)組,不設(shè)置時(shí)和exec方法相同
應(yīng)用例子:
var text='abc def ghi jkl'; //設(shè)置全局旗標(biāo) text.match(/\w+/g); //["abc","def","ghi","jkl"] //不設(shè)置全局旗標(biāo) text.match(/(\w+)\s(\w+)/); //["abc def","abc","def"] •replace方法返回被替換的字符串,如果設(shè)置了全局旗標(biāo),則替換全部匹配了的字符串,否則只替換第一個(gè)匹配的字符串;replace中如果第一個(gè)參數(shù)用了分組,第二個(gè)參數(shù)能夠通過(guò)符號(hào)來(lái)標(biāo)識(shí)分組的前向引用
應(yīng)用例子:
var text="abc def ghi jkl"; //將空格替換為字符 text.replace(/\s/,','); //"abc,def ghi jkl" text.replace(/\s/g,','); //"abc,def,ghi,jkl" //對(duì)空格之前的字符分組,用逗號(hào)替換并前向移動(dòng)一位 text.replace(/(.)\s/g,",$1"); //"ab,cde,fgh,igkl" •在search與split方法中,正則表達(dá)式的全局旗標(biāo)不起作用
以上內(nèi)容是小編給大家介紹的快速學(xué)習(xí)正則表達(dá)式 的方法,希望對(duì)大家有所幫助!
- jQuery如何用正則表達(dá)式驗(yàn)證手機(jī)號(hào)、身份證號(hào)、中文名稱
- 在VS2008中使用正則表達(dá)式進(jìn)行查找和替換
- 運(yùn)用正則表達(dá)式匹配所有表名
- iOS App開(kāi)發(fā)中Objective-C使用正則表達(dá)式進(jìn)行匹配的方法
- java常用正則表達(dá)式
- 玩轉(zhuǎn)python爬蟲之正則表達(dá)式
- JavaScript正則表達(dá)式的分組匹配詳解
- Java正則表達(dá)式提取字符的方法實(shí)例
- 65條最常用正則表達(dá)式 你要的都在這里了
- 正則表達(dá)式的字符串替換方法
- jquery正則表達(dá)式驗(yàn)證(手機(jī)號(hào)、身份證號(hào)、中文名稱)
- JavaScript正則表達(dá)式解析URL的技巧
- 最全的常用正則表達(dá)式大全
- 學(xué)習(xí)Java正則表達(dá)式(匹配、替換、查找)
- 詳解Java正則表達(dá)式語(yǔ)法
- 正則表達(dá)式日常收集整理(簡(jiǎn)單且實(shí)用)
相關(guān)文章
一串字字符中多個(gè)逗號(hào)替換為一個(gè) 既標(biāo)準(zhǔn)分隔符(正則表達(dá)式)
一串字字符中多個(gè)逗號(hào)轉(zhuǎn)換為一個(gè),既標(biāo)準(zhǔn)分隔符(正則表達(dá)式),借助上一篇文章正則表達(dá)式快速入門,來(lái)完成了這個(gè)轉(zhuǎn)換過(guò)程2012-11-11用正則實(shí)現(xiàn)提取代碼內(nèi)容的代碼
用正則實(shí)現(xiàn)提取代碼內(nèi)容的代碼...2007-03-03Java正則表達(dá)式過(guò)濾出字母、數(shù)字和中文
正則表達(dá)式在java程序中應(yīng)用非常廣泛,本文給大家介紹java正則表達(dá)式過(guò)濾字母、數(shù)字和中文,本文代碼講解的非常詳細(xì),非常具有參考價(jià)值,感興趣的朋友快來(lái)看看吧2015-10-10