版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、淺談?wù)齽t表達(dá)式 實(shí)例入門很長時(shí)間沒看 正則表達(dá)式了,碰巧今天用到,溫故知新了一把 看書學(xué)習(xí)吧 50% 的舉一反三練習(xí)中的原創(chuàng)。 一 javascript正則表達(dá)式的基本知識(shí) 1 javascript 正則對(duì)象創(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正則 最基本的使用方法,看不會(huì)的請(qǐng)復(fù)制到筆記本練習(xí)下,看會(huì)了再往下面看。 二 javascript 正則表達(dá)式是分組知識(shí) 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; 括號(hào)的意思列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ù)字的鎊符合,并對(duì)數(shù)字進(jìn)行分組 以存儲(chǔ)他們。在調(diào)用 test 方法后,所有的反向引
12、用都保存到了 RegExp 構(gòu)造函數(shù)中 從 RegExp.$1(它保存了第一個(gè)反向引用)開始,如果還有第二個(gè)反向引用,就是 RegExp.$2,如果還有第三個(gè)反向引用存在,就是 RegExp.$3.依此類推。因?yàn)樵摻M 匹配了 “123456780”,所以 RegExp.$1 中就存儲(chǔ)了這個(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”,對(duì)應(yīng)于它們?cè)诒磉_(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á)式 非捕獲性分組 如果要?jiǎng)?chuàng)建一個(gè)非捕獲性分組,只要在左括號(hào)的后面加上一個(gè)問號(hào)和一個(gè)緊跟的冒號(hào): */ 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)算器向前看一些字符而不是移動(dòng)位置 */ 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)在行尾,則可以使用美元符號(hào) ($)來表示它: */ 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年房產(chǎn)裝修改造補(bǔ)充合同
- 2024-2030年電動(dòng)車多功能開關(guān)公司技術(shù)改造及擴(kuò)產(chǎn)項(xiàng)目可行性研究報(bào)告
- 2024-2030年版中國微電機(jī)行業(yè)前景展望經(jīng)營戰(zhàn)略分析報(bào)告
- 2024年房屋裝修:門窗安裝工程專項(xiàng)合同
- 2024-2030年版中國舉升缸行業(yè)競爭策略及未來發(fā)展?jié)摿Ψ治鰣?bào)告
- 2024-2030年焊用不銹鋼絲搬遷改造項(xiàng)目可行性研究報(bào)告
- 2024-2030年新版中國蓄電池組巡回監(jiān)測儀項(xiàng)目可行性研究報(bào)告
- 2024-2030年可可烘焙機(jī)行業(yè)市場現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 2024-2030年全球裸眼3D行業(yè)發(fā)展?jié)摿巴顿Y前景預(yù)測報(bào)告
- 2024-2030年全球及中國骨盆保護(hù)系統(tǒng)行業(yè)發(fā)展動(dòng)態(tài)及投資前景預(yù)測報(bào)告
- 理論催化劑體積計(jì)算
- 鐵路運(yùn)輸調(diào)度指揮
- YS/T 950-2014散裝紅土鎳礦取制樣方法
- GB/T 324-2008焊縫符號(hào)表示法
- GB/T 2980-2018工程機(jī)械輪胎規(guī)格、尺寸、氣壓與負(fù)荷
- 第七章 歐拉方程
- 五大領(lǐng)域教學(xué)法(課堂PPT)
- 數(shù)控車床編程基本學(xué)習(xí)培訓(xùn)課件
- 習(xí)作:我們眼中的繽紛世界2套(部編版三上)課件
- 貴州·貴陽·山水黔城
- 小講課-中心靜脈壓的測量及臨床意義
評(píng)論
0/150
提交評(píng)論