




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、淺談?wù)齽t表達(dá)式 實(shí)例入門很長時(shí)間沒看 正則表達(dá)式了,碰巧今天用到,溫故知新了一把 看書學(xué)習(xí)吧 50% 的舉一反三練習(xí)中的原創(chuàng)。 一 javascript正則表達(dá)式的基本知識 1 javascript 正則對象創(chuàng)建 和用法 聲明javascript 正則表達(dá)式 復(fù)制代碼 代碼如下: var reCat = new RegExp("cat"); 你也可以 var reCat = /cat/; /Perl 風(fēng)格 (推薦) 2 學(xué)習(xí)最常用的 test exec match search replace split 6個(gè)方法 1) test 檢查指定的字符串是否存在 復(fù)制代碼 代碼如
2、下: var data = "123123" var reCat = /123/gi; alert(reCat.test(data); /true /檢查字符是否存在 g 繼續(xù)往下走 i 不區(qū)分大小寫 2) exec 返回查詢值 復(fù)制代碼 代碼如下: var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs," var reCat = /cat/i; alert(reCat.exec(data); /Cat 3)match 得到查詢數(shù)組 復(fù)制代碼 代碼如下: var data = "123123,21
3、3,12312,312,3,Cat,cat,dsfsdfs," var reCat = /cat/gi; var arrMactches = data.match(reCat) for (var i=0;i < arrMactches.length ; i+) alert(arrMactchesi); /Cat cat 4) search 返回搜索位置 類似于indexof 復(fù)制代碼 代碼如下: var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs," var reCat = /cat/gi; alert(da
4、ta.search(reCat); /23 5) replace 替換字符 利用正則替換 復(fù)制代碼 代碼如下: var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs," var reCat = /cat/gi; alert(data.replace(reCat,"libinqq"); 6)split 利用正則分割數(shù)組 復(fù)制代碼 代碼如下: var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs," var reCat = /,/; var a
5、rrdata = data.split(reCat); for (var i = 0; i < arrdata.length; i+) alert(arrdatai); 3 學(xué)習(xí)下 簡單類 負(fù)向類 范圍類 組合類 復(fù)制代碼 代碼如下: /簡單類 var data = "1libinqq,2libinqq,3libinqq,4libinqq" var reCat = /123libinqq/gi; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i+) alert(arrda
6、tai); / 1libinqq 2libinqq 3libinqq /負(fù)向類 var data = "alibinqq,1libinqq,2libinqq,3libinqq,4libinqq" /u0062cf var reCat = /a123libinqq/gi; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i+) alert(arrdatai); /4libinqq /范圍類 var data = "libinqq1,libinqq2,libinqq3,li
7、binqq4,libinqq5" /u0062cf var reCat = /libinqq2-3/gi; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i+) alert(arrdatai); / libinqq2 libinqq3 /組合類 var data = "a,b,c,w,1,2,3,5" /u0062cf var reCat = /a-q1-4n/gi; var arrdata = data.match(reCat); for (var i = 0; i
8、 < arrdata.length; i+) alert(arrdatai); / a b c 1 2 3 這些都是 js正則 最基本的使用方法,看不會的請復(fù)制到筆記本練習(xí)下,看會了再往下面看。 二 javascript 正則表達(dá)式是分組知識 1) 簡單分組 復(fù)制代碼 代碼如下: <script language="JavaScript"> <!- /*正則表達(dá)式 簡單的分組 舉例 我們要查找字符串 MouseMouse var reCat = /MouseMouse/gi; 盡管這是可以的,但是有點(diǎn)浪費(fèi)。如果不知道Mouse 在字符串中到底出現(xiàn)幾次
9、時(shí)該怎么辦,如果重復(fù)多次呢。 var reCat = /(mouse)2/gi; 括號的意思列Mouse 將在一行連續(xù)出現(xiàn)2次。 */ var data = "Ah-mousemouse" var reCat = /(mouse)2/gi; var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i+) alert(arrdatai); /-> </script> 2 復(fù)雜分組 復(fù)制代碼 代碼如下: <script language="JavaScrip
10、t"> <!- /*正則表達(dá)式 復(fù)雜的分組 ? 零次 或 一次 * 零次 或 多次 + 最少一次 或 多次 */ var data = "bb ba da bad dad aa " var reCat = /(bdad?)/gi; / 匹配出 ba da bad dad var arrdata = data.match(reCat); for (var i = 0; i < arrdata.length; i+) alert(arrdatai); / 同時(shí) 也不介意將分組放在分組中間 / var re = /(mom( and dad)?)/;
11、匹配出 mom 或 mon and daa /-> </script> 3 反向引用 復(fù)制代碼 代碼如下: <script language="JavaScript"> <!- /*正則表達(dá)式 反向引用*/ var sToMatch = "#123456789" var reNumbers = /#(d+)/; reNumbers.test(sToMatch); alert(RegExp.$1); /* 這個(gè)例子嘗試匹配后面跟著幾個(gè)或多個(gè)數(shù)字的鎊符合,并對數(shù)字進(jìn)行分組 以存儲他們。在調(diào)用 test 方法后,所有的反向引
12、用都保存到了 RegExp 構(gòu)造函數(shù)中 從 RegExp.$1(它保存了第一個(gè)反向引用)開始,如果還有第二個(gè)反向引用,就是 RegExp.$2,如果還有第三個(gè)反向引用存在,就是 RegExp.$3.依此類推。因?yàn)樵摻M 匹配了 “123456780”,所以 RegExp.$1 中就存儲了這個(gè)字符串。 */ var sToChange = "1234 5678" var reMatch = /(d4) (d4)/; var sNew = sToCreplace(reMatch,"$2 $1"); alert(sNew); /* 在這個(gè)例子中,正則表達(dá)式有兩個(gè)
13、分組,每一個(gè)分組有四個(gè)數(shù)字。在 replace() 方法的第二個(gè)參數(shù) 中,$2 等同于 “5678” ,而 $1 等同于 “1234”,對應(yīng)于它們在表達(dá)式中的出現(xiàn)順序。 */ /-> </script> 4 候選 復(fù)制代碼 代碼如下: <script language="JavaScript"> <!- /*正則表達(dá)式 候選 */ var sToMatch1 = "red" var sToMatch2 = "black" var reRed = /red/; var reBlack = /black
14、/; alert(reRed.test(sToMatch1) | reBlack.test(sToMatch1); alert(reRed.test(sToMatch2) | reBlack.test(sToMatch2); /* 這雖然能完成任務(wù),但是十分沉長,還有另一種方式就是正則表達(dá)式的候選操作符。 */ var sToMatch1 = "red" var sToMatch2 = "black" var reRedOrBlack = /(red|black)/; alert(reRedOrBlack.test(sToMatch1); alert(r
15、eRedOrBlack.test(sToMatch2); /-> </script> 5 非捕獲性分組 復(fù)制代碼 代碼如下: <script language="JavaScript"> <!- /*正則表達(dá)式 非捕獲性分組 如果要創(chuàng)建一個(gè)非捕獲性分組,只要在左括號的后面加上一個(gè)問號和一個(gè)緊跟的冒號: */ var sToMatch = "#123456789" var reNumbers = /#(?:d+)/; reNumbers.test(sToMatch); alert(RegExp.$1); /* 這個(gè)例子的
16、最后一行代碼輸出一個(gè)空字符串,因?yàn)樵摻M是非捕獲性的, */ var sToMatch = "#123456789" var reNumbers = /#(?:d+)/; alert(sToMatch.replace(reNumbers,"abcd$1"); /* 正因如此,replace()方法就不能通過 RegExp.$x 變量來使用任何反向引用,這段代碼 輸出的“abcd$1”而不是abcd123456789, 因?yàn)?1 在這里并不被看成是一個(gè)反向引用。 */ /-> </script> 6 前瞻 復(fù)制代碼 代碼如下: <sc
17、ript language="JavaScript"> <!- /*正則表達(dá)式 前瞻 前瞻 就和它名字一樣,它告訴正則表達(dá)式運(yùn)算器向前看一些字符而不是移動位置 */ var sToMatch1 = "bedroom" var sToMatch2 = "bedding" var reBed = /bed(?=room)/; alert(reBed.test(sToMatch1); /true alert(reBed.test(sToMatch2); /false /負(fù)向前瞻 var sToMatch1 = "bed
18、room" var sToMatch2 = "bedding" var reBed = /bed(?!room)/; alert(reBed.test(sToMatch1); /false alert(reBed.test(sToMatch2); /true /-> </script> 7 邊界 復(fù)制代碼 代碼如下: <script language="JavaScript"> <!- /*正則表達(dá)式 邊界 行開頭 $ 行結(jié)尾 b 單詞的邊界 B 非單詞的邊界 */ var sToMatch = "
19、Important word is the last one." var reLastWord = /(w+).$/; reLastWord.test(sToMatch); alert(RegExp.$1); /one /* 假如想查找一個(gè)單詞,但要它只出現(xiàn)在行尾,則可以使用美元符號 ($)來表示它: */ var sToMatch = "Important word is the last one." var reLastWord = /(w+)/; reLastWord.test(sToMatch); alert(RegExp.$1); /Important
20、/* 在這個(gè)例子中,正則表達(dá)式查找行起始位置后的一個(gè)或多個(gè)單詞字符。如果遇到非單詞字符 匹配停止,返回 Important。 這個(gè)例子也可以用單詞邊界實(shí)現(xiàn)。 */ var sToMatch = "Important word is the last one." var reLastWord = /(.+?)b/; reLastWord.test(sToMatch); alert(RegExp.$1); /Important /* 這里,正則表達(dá)式用惰性量詞來制定在單詞邊界之前可以出現(xiàn)任何字符,且可以出現(xiàn)一次或 多次(如果使用貪婪性量詞,表達(dá)式就匹配整個(gè)字符串)。 */ var data = " First second thind fourth fifth sixth " var reCat = /b(S+?)b/g; var arrdata = data.match(reCat); for (var i = 0; i < length; i+) alert(arrdatai); /* 使用單詞邊界可以方便地從字符串中抽取單詞。 */ /-> </script> 8 多行模式 Code 復(fù)制代碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西省臨汾市第一中學(xué)2025屆高二化學(xué)第二學(xué)期期末綜合測試試題含解析
- 佛山生豬養(yǎng)殖管理辦法
- 城市應(yīng)急通信保障-洞察及研究
- 園區(qū)廢水排放管理辦法
- 促銷管理辦法限時(shí)制度
- 技術(shù)賦能下的金融科技革新與金融體系重構(gòu)研究
- 食品添加劑相互作用-洞察及研究
- 關(guān)節(jié)鏡技術(shù)進(jìn)展-洞察及研究
- 安全防范與人員管理指引
- 省會經(jīng)濟(jì)圈產(chǎn)業(yè)協(xié)同發(fā)展的機(jī)制與影響因素研究
- 2025至2030全球及中國近炸引信傳感器行業(yè)項(xiàng)目調(diào)研及市場前景預(yù)測評估報(bào)告
- 部編版三年級語文上冊 寫字表
- 工廠十周年活動策劃方案
- 天津匯融商業(yè)管理有限公司招聘筆試題庫2025
- 廣東教育學(xué)院德育研究中心
- 產(chǎn)品標(biāo)品牌管理制度
- 高壓氣體絕緣設(shè)備中SF6分解產(chǎn)物檢測SO2傳感器的設(shè)計(jì)與應(yīng)用
- DBJ04-T494-2025 《坡地建筑設(shè)計(jì)防火標(biāo)準(zhǔn)》
- 中藥學(xué)多選題含答案
- 起重作業(yè)吊索具使用安全培訓(xùn)課件
- 順德區(qū)國家工作人員因私出國(境)審批表
評論
0/150
提交評論