相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- 拉動(dòng)懸浮于頂部的JS控制代碼
- 在JavaScript中構(gòu)建ArrayList示例代碼
- js使用for循環(huán)及if語(yǔ)句判斷多個(gè)一樣的name
- JavaScript中判斷原生函數(shù)檢查function是否是原生代碼
- jQuery CSS()方法改變現(xiàn)有的CSS樣式表
- JavaScript中判斷原生函數(shù)檢查function是否是原生代碼
- jQuery動(dòng)畫高級(jí)用法(上)——詳解animation中的.queue()函數(shù)
- python小技巧之批量抓取美女圖片
- JS中offsetTop、clientTop、scrollTop、offsetTop各屬性介紹
- JS獲取瀏覽器窗口大小 獲取屏幕,瀏覽器,網(wǎng)頁(yè)高度寬度
javascript正則表達(dá)式高級(jí)篇
javascript正則表達(dá)式
通過(guò)上面基礎(chǔ)篇和中級(jí)篇的學(xué)習(xí),我相信我們都能夠?qū)懗銎恋恼齽t了,但是一些特殊的功能也許還需要我們繼續(xù)往下學(xué)習(xí)這些高級(jí)篇的知識(shí)。
正則表達(dá)式的貪婪模式和懶惰模式:
貪婪模式和懶惰模式用言語(yǔ)很難講解清楚,我們這里使用例子的形式來(lái)進(jìn)行講解,當(dāng)然下面的一些知識(shí)也會(huì)以例子的形式來(lái)表達(dá)。
var regExp = /8.*8/;
var regExpTwo = /8.*?8/;
var str = "8google8 8google8 8google8";
var resultOne = regExp.exec(str); 此處的結(jié)果為google8 8google8 8google它盡量多的想要匹配得更多,所以為貪婪模式,其實(shí)是用了重復(fù)(區(qū)間)匹配的正則表達(dá)式都為貪婪模式;
var resultTwo = regExpTwo.exec(str); 此處的結(jié)果為google 它盡量少的匹配,所以為懶惰模式,在重復(fù)(區(qū)間)元素的后面加上?就變?yōu)橄鄳?yīng)的懶惰模式。
不在多說(shuō),相信你已經(jīng)能夠很好的理解正則表達(dá)式的貪婪和懶惰模式了。
正則表達(dá)式的兩條準(zhǔn)則:
1,當(dāng)正則表達(dá)式有嵌套的分組時(shí),分組由外向內(nèi)。
2,正則表達(dá)式中的特殊元素匹配時(shí)需要加上\
前瞻模式:
前瞻模式是指某個(gè)匹配后面必須跟著某個(gè)字符串,例子如下:
var regExp = /goo(?=gle)/;
var strOne = google;
var strTwo = googoo;
當(dāng)匹配第一個(gè)字符串時(shí)能匹配成功,而匹配第二個(gè)字符串時(shí)將匹配失敗,因?yàn)槟J揭?guī)定在goo后面必須要跟著gle,而且返回的結(jié)果為goo;
捕獲性分組和非捕獲性分組:
我們不做言語(yǔ)的講解直接上例子,例子如下:
var regExp = /(google)\s(2014)/;
var str = "google 2014";
regExp.exec(str); 此處獲得一個(gè)數(shù)組結(jié)果集,里面的元素分別為google 2014,google,2014;
如果regExp改為/(google)\s(?:2014)/,則數(shù)組中就只會(huì)包含兩個(gè)元素分別為google 2014,google
因?yàn)榈诙€(gè)分組為非捕獲性的分組
項(xiàng)目經(jīng)驗(yàn):
上面講解了一些特殊的正則表達(dá)式,也許在真正的項(xiàng)目中很少用到,但是掌握它們,能讓你的知識(shí)更加分豐富,遇到比較難的正則表達(dá)式不至于手足無(wú)措。