資源描述:
《javascript正則表達(dá)式完全學(xué)習(xí)手冊(cè)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、JavaScript正則表達(dá)式:菜鳥入門指導(dǎo)第一節(jié):基礎(chǔ)學(xué)習(xí)想要高效地學(xué)習(xí)和掌握正則表達(dá)式的關(guān)鍵是花一天的時(shí)間記住所有符號(hào)。這可能是我所能提供的最好的建議。坐下來(lái),做些記憶卡片,然后記住它們。以下為最常見(jiàn)的一些符號(hào):.-匹配任意字符,換行符除外*-該符號(hào)前面的字符,匹配0次或多次。+-該符號(hào)前面的字符,匹配1次或多次?-該符號(hào)前面的字符是可選的。匹配0次或1次。d-匹配任何單個(gè)數(shù)字。w-匹配任何一個(gè)字符(包括字母數(shù)字以及下劃線)。[XYZ]-匹配字符組中的任意一個(gè)字符,即X、Y、Z中的任意一個(gè)。[XYZ]+-匹配字符組中的一個(gè)或多個(gè)
2、字符。$-匹配字符串結(jié)束的位置。^-匹配字符串開始的位置。[^a-z]-當(dāng)出現(xiàn)在字符類中時(shí),^表示NOT(非);對(duì)于該示例,表示匹配任何非小寫字母。很悶吧,不過(guò)還是記住它們,記住之后你會(huì)知道好處的。第二節(jié):正則表達(dá)式和JavaScript本節(jié)為最后一節(jié),我們來(lái)看看JavaScript方法如何使用正則表達(dá)式。1.Test()這個(gè)方法接受單個(gè)字符串參數(shù),然后返回一個(gè)布爾值,該值表明是否找到一個(gè)滿足條件的值。如果你不需要對(duì)特定的匹配結(jié)果進(jìn)行操作,比如,驗(yàn)證用戶名,“test”方法已足夠完成這個(gè)任務(wù)。示例var?username?=?'John
3、Smith';???alert(/[A-Za-z_-]+/.test(username));?//?returns?true???在上面的代碼中,我們首先聲明一個(gè)正則表達(dá)式,表示僅允許大寫或小寫字母、下劃線和連字符。將這些可接受的字符放在括號(hào)中,就指定了一個(gè)字符組。緊隨其后的+號(hào)表示我們想要正在尋找的是一個(gè)或多個(gè)前述字符組中的字符。然后使用該范式對(duì)變量“JohnSmith”進(jìn)行測(cè)試。由于存在匹配,瀏覽器的顯示框中將顯示true。2.Split()你可能對(duì)split方法已經(jīng)很熟了。該方法接受單個(gè)正規(guī)表達(dá)式,表示在哪里進(jìn)行“分割”。請(qǐng)注意,
4、如果喜歡,你還可以使用字符串。var?str?=?'this?is?my?string';???alert(str.split(/s/));?//?輸出"this,?is,?my,?string"???上面代碼中的s表示單個(gè)空格,通過(guò)它,我們將字符串分割為一個(gè)數(shù)組。如果想要訪問(wèn)某個(gè)特定的值,使用相應(yīng)的索引即可。var?str?=?'this?is?my?this?string';???alert(str.split(/s/)[4]);?//?輸出"string"???3.replace()可能你已經(jīng)想到了,replace方法可以用
5、來(lái)將文本中的一部分(由字符串或正則表達(dá)式表示)替換為不同的字符串。示例如果想要將“Hello,World”改為“Hello,Universe”,可以使用下面的代碼:var?someString?=?'Hello,?World';???someString?=?someString.replace(/World/,?'Universe');???alert(someString);?//?輸出"Hello,?Universe"???應(yīng)留意的是,對(duì)于這個(gè)簡(jiǎn)單的示例,我們本來(lái)可以簡(jiǎn)單的使用.replace('World','Universe'
6、)。另外,使用replace方法不會(huì)自動(dòng)重寫變量的值,我們必須將返回值再次分配給這個(gè)變量:someString。示例2再舉一個(gè)例子,假設(shè)用戶要在我們的網(wǎng)站注冊(cè)一個(gè)賬號(hào),我們可能想要提供一些基礎(chǔ)的安全預(yù)防措施。也許我們想要留下他們的用戶名,而刪除其他任何符號(hào),引號(hào)、分號(hào)等等。對(duì)于JavaScript和正則表達(dá)式,執(zhí)行這類任務(wù)是樁瑣碎的小事情。var?username?=?'J;ohnSmith;@%';???username?=?username.replace(/[^A-Za-zd_-]+/,?'');???alert(usernam
7、e);?//?輸出;@%???看到最后生成的顯示值,有人可能會(huì)想,上面的代碼有錯(cuò)誤。事實(shí)并非如此。你仔細(xì)看看,會(huì)發(fā)現(xiàn)字母“J”后的分號(hào)被刪除了,正如我們所期望的那樣。為了通知引擎繼續(xù)搜索字符串查找更多匹配,我們可以做結(jié)束的斜杠后面直接添加一個(gè)“g”,這個(gè)修飾符或標(biāo)記表示“global(全局)”。修改后的代碼如下所示:var?username?=?'J;ohnSmith;@%';???username?=?username.replace(/[^A-Za-zd_-]+/g,?'');???alert(username);?//?輸出Jo
8、hnSmith???現(xiàn)在,正則表達(dá)式搜索整個(gè)字符串,替換所有必要的字符。讓我們看看關(guān)鍵的表達(dá)式(.replace(/[^A-Za-zd_-]+/g,'');),要注意,括號(hào)內(nèi)的向上箭頭(即^)非常重要。當(dāng)