這篇文章給大家分享的是有關(guān)怎樣快速學習正則表達式的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為淶源企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站制作,淶源網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
正則表達式概念
正則表達式,又稱正規(guī)表示法、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。
在日常工作中,我們經(jīng)常寫正則表達式,比如在表單中經(jīng)常用來驗證用戶輸入的格式是否正確,我們就會用到正則表達式;可以把正則表達式看做是可以描述問題的語言,它就是專門為模式匹配而設(shè)計的
-------------------------------------------------------------------------------
正則表達式的語法
可以簡單粗暴得把正則表達式理解為查找東西,舉個例子:要在"Hello World"中找到"world"這個單詞,先用直白的語言來描述就是查找"從w開頭到d結(jié)束的字母組合",使用正則來描述就是\bw\w*d\b,這個就是模式字符串,它由元字符和字面量字符組成
?常見的元字符如下:
?正則表達式中的旗標
?正則表達式中的轉(zhuǎn)義字符
JS中的正則表達式
?兩種生成方式,
舉例:匹配0-9有沒有出現(xiàn)
復制代碼 代碼如下:
1、通過RegExp var reg=new RegExp('^[0-9]','g');
2、通過表達式字面量 var reg=/^[0-9]/g;
?兩種常用的方法
test()、exec()
復制代碼 代碼如下:
1、test方法:如果輸入字符串與模式相匹配,test就返回真,沒有則返回假
2、exec方法:如果輸入字符串與模式匹配,則返回一個數(shù)組,沒有匹配就返回null
/*test()方法,匹配是否有出現(xiàn)0-9*/ var reg1=/^[0-9]/; reg1.test('There is no number'); //返回結(jié)果為false /*exec()方法,匹配句子里面的單詞,兩個單詞一組*/ /*沒有設(shè)置全局旗標*/ var reg2=/(\w+)\s(\w+)/; reg2.test('There is no number'); //返回結(jié)果['There is','There','is'] //第0個元素是匹配的字符串,后面兩個元素分別是分組引用的子字符串 /*設(shè)置全局旗標*/ var reg3=/(\w+)\s(\w+)/g; reg3.test('There is no number'); //設(shè)置了全局旗標的話,exec()會循環(huán)尋找 //第一次查找結(jié)果['There is','There','is'],第二次結(jié)果['no number','no','number'],第三次結(jié)果null exec()方法如果設(shè)置了全局旗標,在循環(huán)中使用必須要手動設(shè)置其reg.lastIndex = 0;,否則它會間隔匹配
--------------------------------------------------------------------------------
字符串對象與正則表達式
?在string對象中有不少以正則表達式對象作為參數(shù)的方法
屬性 | 說明 |
---|---|
match(regexp) | 返回正則表達式regexp的匹配結(jié)果 |
replace(searchValue,replaceValue) | 將searchValue(正則表達式或是字符串值) 替換為replaceValue,并返回響應(yīng)的字符串 |
search(regexp) | 返回正則表達式regexp匹配位置的下標,沒有匹配就返回-1 |
split(separator,limit) | 通過參數(shù)separator(字符串或是正則表達式) 對字符串進行分割,并返回一個字符串數(shù)組 |
?match方法會返回元素與模式相匹配的字符串的數(shù)組,設(shè)置全局旗標時,會返回所有與模式相匹配的字符串數(shù)組,不設(shè)置時和exec方法相同
應(yīng)用例子:
var text='abc def ghi jkl'; //設(shè)置全局旗標 text.match(/\w+/g); //["abc","def","ghi","jkl"] //不設(shè)置全局旗標 text.match(/(\w+)\s(\w+)/); //["abc def","abc","def"] ?replace方法返回被替換的字符串,如果設(shè)置了全局旗標,則替換全部匹配了的字符串,否則只替換第一個匹配的字符串;replace中如果第一個參數(shù)用了分組,第二個參數(shù)能夠通過符號來標識分組的前向引用
應(yīng)用例子:
var text="abc def ghi jkl"; //將空格替換為字符 text.replace(/\s/,','); //"abc,def ghi jkl" text.replace(/\s/g,','); //"abc,def,ghi,jkl" //對空格之前的字符分組,用逗號替換并前向移動一位 text.replace(/(.)\s/g,",$1"); //"ab,cde,fgh,igkl" ?在search與split方法中,正則表達式的全局旗標不起作用
感謝各位的閱讀!關(guān)于“怎樣快速學習正則表達式”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!