国产精品成人VA在线观看,亚洲日韩在线中文字幕综合,亚洲AV电影天堂男人的天堂,久久人人爽人人爽人人av东京热

News新聞

業(yè)界新聞動(dòng)態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁(yè)      JS/JQ/AJAX      javascript正則表達(dá)式詳解

javascript正則表達(dá)式詳解

標(biāo)簽: 發(fā)布日期:2014-02-20 00:00:00 1126

在基礎(chǔ)篇中我們已經(jīng)講解了如何來(lái)使用正則表達(dá)式等一些基礎(chǔ)知識(shí),這里我們要講解的是正則表達(dá)式中的模式匹配,它們能幫助我們更好更快的寫(xiě)出漂亮的正則表達(dá)式,當(dāng)然它們也是基礎(chǔ)的知識(shí),更高端正則表達(dá)式的需要自己在深入的研究!下面對(duì)模式的分類(lèi)是我自己為其命的名,目的只是能更快更準(zhǔn)的記住這些模式。

快捷匹配元字符:

.  點(diǎn)元素:表示匹配一個(gè)且必須一個(gè)任意字符;(換行符\n除外)

\s 表示匹配一個(gè)空格字符

\S 非\s

\d 表示匹配0-9中的任意一個(gè)數(shù)字

\D 非\d

\w 表示匹配一個(gè)數(shù)字或者字符或則下劃線

\W 非\w

\b 邊界匹配

\B 非\b

這些是最基礎(chǔ)最常用的一些快捷的匹配方式

重復(fù)(區(qū)間)匹配元字符:

x* 表示匹配0個(gè)或者一個(gè)或者多個(gè)x

x+ 表示匹配1個(gè)或者多個(gè)x

x? 表示匹配0個(gè)或者1個(gè)x

x{m,n} 表示匹配至少m個(gè)最多n個(gè)x,其中包括了m和n

x{m} 表示精確的匹配m個(gè)x

x{m,} 表示匹配m個(gè)或者多于m個(gè)x

我想大家看到這里已經(jīng)覺(jué)得自己能寫(xiě)出漂亮的正則表達(dá)式了,我們來(lái)試一試

var regExp = /\d*/;表示匹配0個(gè)或者一個(gè)或者多個(gè)數(shù)字

var regExp = /.+/;表示匹配任意字符一次或者多次;是的你已經(jīng)能寫(xiě)出一些漂亮的正則表達(dá)式了,我們還要更上一層樓,繼續(xù)往下學(xué)習(xí);

集合匹配:

[a-z] 表示匹配小寫(xiě)字符a到z,其中包括了a和z

[a-z0-9] 表示匹配a-z和0-9;這種形式的為集合的復(fù)合式的寫(xiě)法

[^a-z] 表示非a-z中的任意一個(gè)字符

分組匹配:

(google) 將Google看為一組也就是一個(gè)整體;

分組中有一個(gè)很有意思的功能,它匹配到的第一組結(jié)果保存在RegExp.$1中依次類(lèi)推RegExp.$2....;

例子:

var regExp = /8(google)+8/;

var str = "8googlegoogle8";

var arr = regExp.exec(str);

alert(RegExp.$1); 此處將會(huì)彈出google;

邏輯匹配:

| 表示或匹配;如:var regExp = /a|b/;表示匹配a或者b;

限定匹配:

^ 行首匹配,該符號(hào)必須寫(xiě)在第一個(gè)/的后面;

$ 行尾匹配,該字符必須寫(xiě)在最后一個(gè)/的前面;

例子:

var regExp = /\d?google/; 表示在google的前面必須要有0個(gè)或者1個(gè)數(shù)字

var str = "6666google";

var bool = regExp.test(str); 大家很可能會(huì)認(rèn)為這個(gè)會(huì)返回false,因?yàn)镚oogle的前面已經(jīng)超過(guò)了一個(gè)數(shù)字,但是它會(huì)返回true,因?yàn)樗梢詮淖詈笠粋€(gè)6開(kāi)始匹配,如果var regExp = /^\dgoogle/;這樣寫(xiě),那么上面的例子則會(huì)返回false,因?yàn)樗薅藦男惺组_(kāi)始匹配;行尾匹配和上面的例子類(lèi)似,就不在費(fèi)筆墨了。


有了上面的快捷匹配,重復(fù)匹配,集合匹配,分組匹配,邏輯匹配,限定匹配我想絕大部分的運(yùn)用正則表達(dá)式的知識(shí)你都能搞定了,然后加上項(xiàng)目的真正的練習(xí)我相信我們能更好!

項(xiàng)目經(jīng)驗(yàn):

在用exec時(shí)我相信大家都很容易犯一個(gè)書(shū)寫(xiě)的錯(cuò)誤,因?yàn)槲以陧?xiàng)目中有過(guò)經(jīng)驗(yàn)教訓(xùn),這里分享給大家;

function regExec(str){

   var regExp = /8google*8/ig;

   var arr = regExp.exec(str);

   if(arr.length > 0){....} //如果匹配到的結(jié)果集數(shù)組長(zhǎng)度大于0然后執(zhí)行代碼

};

這種寫(xiě)法的致命之處在于當(dāng)沒(méi)有匹配到時(shí),arr為null,null沒(méi)有l(wèi)ength屬性,所以在if中運(yùn)用null.length將報(bào)錯(cuò);

正確的寫(xiě)法是:

if(arr){.....};如果不是null,任何對(duì)象將轉(zhuǎn)換為true,而是null時(shí)則會(huì)轉(zhuǎn)換為false;