資源描述:
《javascript類型系統(tǒng)之正則表達(dá)式_javascript技巧》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、JavaScript類型系統(tǒng)之正則表達(dá)式定義正則又叫規(guī)則或模式,是一個強(qiáng)大的字符串匹配工具。javascript通過RegExp類型來支持正則表達(dá)式特性[1]貪焚性,匹配最長的[2]懶惰性,不設(shè)置/g,則只匹配第1個寫法perl寫法(使用字面量形式)varcxprcssion二/pattcrn/flags;模式(pattern)部分可以是任何簡單或復(fù)雜的正則表達(dá)式,可以包含字符串、限定類、分組、向前查找以及反向引用。每個止則表達(dá)式可以帶一個或多個標(biāo)志(flags),用以標(biāo)明正則表達(dá)式的行為。正則表達(dá)式支持三個標(biāo)志:[1]g:表示全局模式(global)[2]i:表示不區(qū)分大小寫(ign
2、oreCasc)[3]m:表示多行模式(multiline)〃匹配字符串所有'at'的實(shí)例varpatternl二/at/g;RegExp構(gòu)造函數(shù)RegExp構(gòu)造函數(shù)接收兩個參數(shù):耍匹配的字符串模式(pattern)和標(biāo)志字符串(flags)(可選)[注意]RegExp構(gòu)造函數(shù)的兩個參數(shù)都是字符串。且使用字面量形式定義的任何表達(dá)式都叫?使用構(gòu)造函數(shù)//匹配字符串所有'毗’的實(shí)例varpattern二newRegExp('at'g');兩種寫法的區(qū)別字面量寫法不支持變量,只能用構(gòu)造函數(shù)的形式來寫[tips]獲取class元素(因為classnamc是變量,只能使用構(gòu)造函數(shù)的形式)func
3、tiongetByClass(obj,classname){varelements二obj.getElementsByTagMame('*');varresult二[];varpattern二newRegExp('(
4、\s)'+classname+'(\s
5、$)');for(vari=0;i6、新RegExp實(shí)例都是一個新實(shí)例。ES5中規(guī)定使用正則字面量必須像直接調(diào)用RegExp構(gòu)造函數(shù)一樣,每次都創(chuàng)建新的RegExp實(shí)例語法[注意]正則表達(dá)式中不能出現(xiàn)多余空格元字符(14個)0[]{}八$丨?*+?[注意]元字符必須轉(zhuǎn)義,即用加轉(zhuǎn)義字符,用newRegExp寫的止則必須雙重傳義轉(zhuǎn)義字符?除換行符之外的任意字符d數(shù)字D非數(shù)字w字母、數(shù)字、下劃線W非字母、數(shù)字、下劃線(漢字不屬于w)s空格S非空格b邊界符(w的左側(cè)或右側(cè)不是叭則會出現(xiàn)一?個邊界符)B非邊界符1表示和前面相同的一個字符t制表符v垂直制表符uxxxx査找以十六進(jìn)制xxxx規(guī)定的
7、Unicode字符(u4c00-u9fa5代表中文)(w)(d)l2:1代表w當(dāng)時所代表的值,2代表d當(dāng)時所代表的值[注意]正則表達(dá)式屮的子項必須是用小括號括起來的,并且順序以小括號的前描號出現(xiàn)的順序為準(zhǔn)[tips]找出重復(fù)項最多的字符和個數(shù)varstr=Jaaaaabbbbbdddddaaaaaaaffffffffffffffffffgggggccccccc,;varpattern=/(w)l+/g;varmaxLength=0;varmaxValue二'';varresult二str.replace(pattcrn,function(match,matchl
8、,pos,originalTcxt){if(match,length>maxLength){maxLength二match,length;maxValue二matchl;}})console,log(maxLength,maxValue);//18系統(tǒng)轉(zhuǎn)義alert()和console,log()里面的字符是系統(tǒng)轉(zhuǎn)義字符字行表格車紙杠引引以空換制空回進(jìn)斜單雙nnOntbrf‘〃X\\\\\?I?六進(jìn)制nn表示一個字符(n為0-f),如x41表示'A'unnnn以十六進(jìn)制nnnn表示一個Unicode字符(n為0-f),如u03a3表示希臘字符£[注意]alert里而的
9、換行不能用〈br>或<br>,而應(yīng)該用alertChttp://www.baidu.comt你好')雙重轉(zhuǎn)義由于RegExp構(gòu)造函數(shù)的參數(shù)是字符串,所以某些情況下,需要對字符進(jìn)行雙重轉(zhuǎn)義。所有元字符必須雙重轉(zhuǎn)義,已經(jīng)轉(zhuǎn)義過的字符也必須雙重轉(zhuǎn)義字面量模式->/[bc]at//.at//name/age//d.d{l,2}//w\hello\123/等價的字符申〃\[bc\bt〃\.at"ame\/age,/〃