JavaScript 核心參考教程 RegExp對(duì)象
- 正則表達(dá)式的直接量字符
字符 匹配
字母數(shù)字字符 本身
\o NUL字符(\u0000)
\t 制位表(\u0009)
\n 換行符(\u000A)
\v 垂直制位表(\u000B)
\f 換頁(yè)符(\u000C)
\r 回車(\u000D)
\xnn 由十六進(jìn)制數(shù)nn指定的拉丁字符,例如\u0A等價(jià)于\n
\uxxxx 由十六進(jìn)制數(shù)xxxx指定的Unicode字符,例如\u0009等價(jià)于\t
\cX 控制字符X,例如,\cJ等價(jià)于\n - 正則表達(dá)式的字符類
字符 匹配
[...] 位于括號(hào)內(nèi)的任意字符
[^...] 不在括號(hào)之中的任意字符
. 除換行符和其他Unicode行中止符之外的任意字符
\w 任何ASCII單字字符,等價(jià)于[a-zA-Z0-9_]
\W 任何ASCII非單字字符,等價(jià)于[^a-zA-Z0-9_]
\s 任何Unicode空白符[\f\n\r\t\v]
\S 任何Unicode非空白符,注意\w和\S的不同[^\f\n\r\t\v]
\d 任何ASCII數(shù)字,等價(jià)于[0-9]
\D 除了ASCII數(shù)字之外的任何字符,等價(jià)于[^0-9]
[\b] 退格直接量(特例) - 正則表達(dá)式的重復(fù)字符
字符 含義
{n,m} 匹配前一項(xiàng)至少n次,但不能超過(guò)m次
{n,} 匹配前一項(xiàng)n次,或更多次
{n} 匹配前一項(xiàng)恰好n次
? 匹配前一項(xiàng)0次或1次,也就是說(shuō)這一項(xiàng)是可選的。等價(jià)于{0,1}
+ 匹配前一項(xiàng)1次或多次。等價(jià)于{1,}
* 匹配前一項(xiàng)0次或多次。等價(jià)于{0,}
在正則表達(dá)式中,括號(hào)具有幾種作用。一個(gè)作用是把單獨(dú)的項(xiàng)目組合成子表達(dá)式,以便可以象處理一個(gè)
獨(dú)立的單元那樣用|、*、+或?等來(lái)處理它們。括號(hào)的另一個(gè)作用是在完整的模式中定義子模式。當(dāng)一
個(gè)正則表達(dá)式成功地和目標(biāo)字符串相匹配時(shí),可以從目標(biāo)串中抽出和括號(hào)中的子模式相匹配的部分。 - 正則表達(dá)式的選擇、分組和引用字符
字符 含義
| 選擇。匹配的是該符號(hào)的左邊的子表達(dá)式或右邊的子表達(dá)式
(...) 組合。將幾個(gè)項(xiàng)目組合為一個(gè)單元,這個(gè)單元可由|、*、+或?等符號(hào)使用,
而且還可以記住和這個(gè)組合匹配的字符,以供此后的引用使用
(?:...) 只組合。把項(xiàng)目組合到一個(gè)單元,但是不記憶與該組匹配的字符
\n 和第n個(gè)分組第一次匹配的字符相匹配,組是括號(hào)中的子表達(dá)式(可能是嵌套
的)。組號(hào)是從左到右計(jì)數(shù)的左括號(hào)數(shù),以(?:形式分組的組不編碼。 - 正則表達(dá)式的錨元素
字符 含義
^ 匹配字符串的開(kāi)頭,在多行檢索中,匹配一行的開(kāi)頭
$ 匹配字符串的結(jié)尾,在多行檢索中,匹配一行的結(jié)尾
\b 匹配一個(gè)詞語(yǔ)的邊界。簡(jiǎn)而言之,就是位于字符\w和\W之間的位置,或位于字符\w
和字符串的開(kāi)頭和結(jié)尾的位置(但注意:[\b]匹配的是退格符)
\B 匹配非詞語(yǔ)邊界的字符
(?=p) 正前向聲明,要求接下來(lái)的字符都與模式p匹配,但是不包括匹配中的那些字符
(?!p) 反向前聲明,要求接下來(lái)的字符不與模式P匹配 - 正則表達(dá)式的標(biāo)志
字符 含義
i 執(zhí)行大小寫(xiě)不敏感匹配
g 執(zhí)行一個(gè)全局匹配,簡(jiǎn)而言之,即找到所有匹配,而不是找到第一個(gè)之后就停止
m 多行模式,^匹配一行的開(kāi)頭和字符串的開(kāi)頭,$匹配一行的結(jié)尾和字符串的結(jié)尾
JS中的RegExp對(duì)象
- 構(gòu)造函數(shù):
顯式構(gòu)造函數(shù),語(yǔ)法為:new RegExp("pattern"[,"flags"])。
隱式構(gòu)造函數(shù),語(yǔ)法為: /pattern/[flags]。 - 靜態(tài)屬性
index 是當(dāng)前表達(dá)式模式首次匹配內(nèi)容的開(kāi)始位置,從0開(kāi)始計(jì)數(shù)。其初始值為-1,每次成功匹配時(shí),index屬性都會(huì)隨之改變。 input 返回當(dāng)前所作用的字符串,可以簡(jiǎn)寫(xiě)為$_,初始值為空字符串""。 lastIndex 是當(dāng)前表達(dá)式模式首次匹配內(nèi)容中最后一個(gè)字符的下一個(gè)位置,從0開(kāi)始計(jì)數(shù),常被作為繼續(xù)搜索時(shí)的起始位置,初始值為-1,表示從起始位置開(kāi)始搜索,每次成功匹配時(shí),lastIndex屬性值都會(huì)隨之改變。 lastMatch 是當(dāng)前表達(dá)式模式的最后一個(gè)匹配字符串,可以簡(jiǎn)寫(xiě)為$&。其初始值為空字符串""。在每次成功匹配時(shí),lastMatch屬性值都會(huì)隨之改變。 lastParen 如果表達(dá)式模式中有括起來(lái)的子匹配,是當(dāng)前表達(dá)式模式中最后的子匹配所匹配到的子字符串,可以簡(jiǎn)寫(xiě)為$+。其初始值為空字符串""。每次成功匹配時(shí),lastParen屬性值都會(huì)隨之改變。 leftContext 是當(dāng)前表達(dá)式模式最后一個(gè)匹配字符串左邊的所有內(nèi)容,可以簡(jiǎn)寫(xiě)為$`(其中“'”為鍵盤(pán)上“Esc”下邊的反單引號(hào))。初始值為空字符串""。每次成功匹配時(shí),其屬性值都會(huì)隨之改變。 $1…$9 這些屬性是只讀的。如果表達(dá)式模式中有括起來(lái)的子匹配,$1…$9屬性值分別是第1個(gè)到第9個(gè)子匹配所捕獲到的內(nèi)容。如果有超過(guò)9個(gè)以上的子匹配,$1…$9屬性分別對(duì)應(yīng)最后的9個(gè)子匹配。在一個(gè)表達(dá)式模式中,可以指定任意多個(gè)帶括號(hào)的子匹配,但RegExp對(duì)象只能存儲(chǔ)最后的9個(gè)子匹配的結(jié)果。在RegExp實(shí)例對(duì)象的一些方法所返回的結(jié)果數(shù)組中,可以獲得所有圓括號(hào)內(nèi)的子匹配結(jié)果。 - 實(shí)例屬性
global 返回創(chuàng)建RegExp對(duì)象實(shí)例時(shí)指定的global標(biāo)志(g)的狀態(tài)。如果創(chuàng)建RegExp對(duì)象實(shí)例時(shí)設(shè)置了g標(biāo)志,該屬性返回True,否則返回False,默認(rèn)值為False。 ignoreCase 返回創(chuàng)建RegExp對(duì)象實(shí)例時(shí)指定的ignoreCase標(biāo)志(i)的狀態(tài)。如果創(chuàng)建RegExp對(duì)象實(shí)例時(shí)設(shè)置了i標(biāo)志,該屬性返回True,否則返回False,默認(rèn)值為False。 multiLine 返回創(chuàng)建RegExp對(duì)象實(shí)例時(shí)指定的multiLine標(biāo)志(m)的狀態(tài)。如果創(chuàng)建RegExp對(duì)象實(shí)例時(shí)設(shè)置了m標(biāo)志,該屬性返回True,否則返回False,默認(rèn)值為False。 source 返回創(chuàng)建RegExp對(duì)象實(shí)例時(shí)指定的表達(dá)式文本字符串。 - 實(shí)例方法
exec 語(yǔ)法格式為exec(str)。該方法使用創(chuàng)建RegExp對(duì)象實(shí)例時(shí)所指定的表達(dá)式模式對(duì)一個(gè)字符串進(jìn)行搜索,并返回一個(gè)包含搜索結(jié)果的數(shù)組。
如果為正則表達(dá)式設(shè)置了全局標(biāo)志(g),可以通過(guò)多次調(diào)用exec和test方法在字符串中進(jìn)行連續(xù)搜索,每次都是從RegExp對(duì)象的lastIndex屬性值指定的位置開(kāi)始搜索字符串。
如果沒(méi)有設(shè)置全局標(biāo)志(g),則exec和test方法忽略RegExp對(duì)象的lastIndex屬性值,從字符串的起始位置開(kāi)始搜索。如果exec方法沒(méi)有找到匹配,返回值為null;如果找到匹配,則返回一個(gè)數(shù)組,并更新RegExp對(duì)象中有關(guān)靜態(tài)屬性以反映匹配情況。返回?cái)?shù)組中的元素0包含了完整的匹配結(jié)果,而元素1~n依次是表達(dá)式模式中定義的各個(gè)子匹配的結(jié)果。test 語(yǔ)法格式為test(str)。該方法檢查一個(gè)字符串中是否存在創(chuàng)建RegExp對(duì)象實(shí)例時(shí)所指定的表達(dá)式模式,如果存在就返回True,否則返回False。 如果找到匹配項(xiàng),則會(huì)更新RegExp對(duì)象中的有關(guān)靜態(tài)屬性,以反映匹配情況。 compile 語(yǔ)法格式為compile("pattern"[,"flags"])。該方法可以更換RegExp對(duì)象實(shí)例所使用的表達(dá)式模式,并將新的表達(dá)式模式編譯為內(nèi)部格式,從而使以后的匹配過(guò)程執(zhí)行更快。 - RegExp說(shuō)明
默認(rèn)情況下,正則表達(dá)式使用最長(zhǎng)(也叫貪婪)匹配原則.當(dāng)?緊隨其它限定符(*、+、?、{n}、{n,}、{n,m})之后時(shí),匹配模式變成使用最短(也叫非貪婪)匹配原則.
分組組合符就是將正則表達(dá)式中的某一部分內(nèi)容組合起來(lái)的符號(hào),反向引用符則是用于匹配前面的分組組合所捕獲到的內(nèi)容標(biāo)識(shí)符號(hào)
(1) (pattern)將圓括號(hào)中的pattern部分組合成一個(gè)可統(tǒng)一操作的組合項(xiàng)和子匹配,每個(gè)捕獲
的子匹配項(xiàng)按照它們?cè)谡齽t表達(dá)式模式中從左到右出現(xiàn)的順序存儲(chǔ)在緩沖區(qū)中.緩沖區(qū)從1開(kāi)始編號(hào),最多可存儲(chǔ)99個(gè)子匹配捕獲的內(nèi)容.存儲(chǔ)在緩沖區(qū)中的子匹配捕獲的內(nèi)容,可以在編程語(yǔ)言中被檢索,也可以在正則表達(dá)式中被反向引用.若要匹配字面意義的括號(hào)字符"("和")",在正則表達(dá)式中要分別使用"\(" 和"\)".
(2) \num匹配編號(hào)為num的緩沖區(qū)所保存的內(nèi)容,此處的num是一個(gè)標(biāo)識(shí)特定緩沖區(qū)的一位或兩位十進(jìn)制正整數(shù),這種方式稱為子匹配的反向引用.反向引用最有用的應(yīng)用之一就是能提供表示相同匹配項(xiàng)的能力,例如,要匹配連續(xù)的5個(gè)數(shù)字字符,可以使用\d{5}作為正則表達(dá)式文本,它可以匹配12345,但是, 要匹配連續(xù)的5個(gè)相同的數(shù)字字符,如55555、11111等,需要使用(\d)\1{4}作為正則表達(dá)式文本,\1表示與前面(\d)所捕獲的內(nèi)容一樣,\1{4}則表示前面的(\d)所捕獲的內(nèi)容還連續(xù)出現(xiàn)4次.又例如,要匹配"Is is the cost of of gasoline going up up?"中所有連續(xù)重復(fù)的單詞部分,可以使用/\b([a-z]+)\1\b/gi作為正則表達(dá)式文本.
(3) (?:pattern) 將圓括號(hào)中的pattern部分組合成一個(gè)可統(tǒng)一操作的組合項(xiàng),但不把這部分內(nèi)容當(dāng)作子匹配捕獲,即pattern部分是一個(gè)非捕獲匹配,它匹配的內(nèi)容不存儲(chǔ)在緩沖區(qū)中供以后使用.這對(duì)必須進(jìn)行組合、但又不想讓組合的部分具有子匹配特點(diǎn)的情況很有用.
(4) (?=pattern)稱為正向"預(yù)測(cè)先行"匹配,在被搜索字符串的相應(yīng)位置必須有pattern部分匹配的內(nèi)容,但這部分匹配的內(nèi)容不作為匹配結(jié)果處理,更不會(huì)被存儲(chǔ)在捕獲緩沖區(qū)中供以后使用.(?=pattern)必須位于一個(gè)正則表達(dá)式模式的最前或最后面.
(5) (?!pattern)稱為反向"預(yù)測(cè)先行"匹配,在被搜索的字符串的相應(yīng)位置不能有pattern部分匹配的內(nèi)容,除此之外,功能與正向"預(yù)測(cè)先行"匹配一樣.
實(shí)例演示
* 簡(jiǎn)單示例
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
# 注意事項(xiàng)
(?<=exp)零寬度正回顧后發(fā)斷言(不支持)
(?<!exp)零寬度負(fù)回顧后發(fā)斷言(不支持)
# 參考資料
正則表達(dá)式30分鐘入門(mén)教程 http://www.fzitv.net/tools/zhengze.html
- JavaScript學(xué)習(xí)小結(jié)(7)之JS RegExp
- javascript正則表達(dá)式和字符串RegExp and String(二)
- javascript正則表達(dá)式和字符串RegExp and String(一)
- JavaScript通過(guò)RegExp實(shí)現(xiàn)客戶端驗(yàn)證處理程序
- javascript 中String.match()與RegExp.exec()的區(qū)別說(shuō)明
- JS正則中的RegExp對(duì)象對(duì)象
- js正則表達(dá)式講解之index屬性(RegExp對(duì)象)
- javascript 正則替換 replace(regExp, function)用法
- javascript RegExp multiline多行匹配影響的^$
- javascript RegExp對(duì)象(正則表達(dá)式)
- JS正則表達(dá)式字面量和使用new RegExp構(gòu)造函數(shù)創(chuàng)建的正則表達(dá)式有什么區(qū)別
- 詳解JavaScript RegExp對(duì)象
相關(guān)文章
js根據(jù)手機(jī)客戶端瀏覽器類型,判斷跳轉(zhuǎn)官網(wǎng)/手機(jī)網(wǎng)站多個(gè)實(shí)例代碼
這篇文章主要介紹了js根據(jù)手機(jī)客戶端瀏覽器類型,判斷跳轉(zhuǎn)官網(wǎng)/手機(jī)網(wǎng)站多個(gè)實(shí)例代碼,需要的朋友可以參考下2016-04-04
JavaScript中獲取高度和寬度函數(shù)總結(jié)
這篇文章主要介紹了JavaScript中獲取高度和寬度函數(shù)總結(jié),例如獲取視窗大小、可見(jiàn)區(qū)域?qū)?、可?jiàn)區(qū)域高、獲取元素自身大小等,很方便的一個(gè)總結(jié),需要的朋友可以參考下2014-10-10
javascript full screen 全屏顯示頁(yè)面元素的方法
要想讓頁(yè)面的某個(gè)元素全屏顯示,就像在網(wǎng)頁(yè)上看視頻的時(shí)候,可以全屏觀看一樣,該怎么實(shí)現(xiàn)呢2013-09-09
js實(shí)現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)隨機(jī)點(diǎn)名系統(tǒng)(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
js 獲取坐標(biāo) 通過(guò)JS得到當(dāng)前焦點(diǎn)(鼠標(biāo))的坐標(biāo)屬性
通過(guò)JS得到當(dāng)前焦點(diǎn)的坐標(biāo),如何實(shí)現(xiàn),接下來(lái)詳細(xì)介紹實(shí)現(xiàn)步驟,有需要的朋友可以參考下2013-01-01
javascript 模擬JQuery的Ready方法實(shí)現(xiàn)并出現(xiàn)的問(wèn)題
今天在閱讀網(wǎng)上一些模擬Jq的ready方法時(shí),發(fā)現(xiàn)一些小細(xì)節(jié),就是網(wǎng)上的ready事件大部分都是在onload事件執(zhí)行后加載,而jquery確能在onload加載前。2009-12-12
如何實(shí)現(xiàn)移動(dòng)端瀏覽器不顯示 pc 端的廣告
隨著移動(dòng)網(wǎng)絡(luò)的發(fā)展,越來(lái)越多的人使用手機(jī)等移動(dòng)端瀏覽網(wǎng)頁(yè)辦公,那么如果在手機(jī)打開(kāi)頁(yè)面的時(shí)候顯示大大的聯(lián)盟廣告,用戶體驗(yàn)度會(huì)非常差,經(jīng)過(guò)一番研究,用下面的方法實(shí)現(xiàn)了移動(dòng)端瀏覽器不顯示PC端廣告。2015-10-10
JS基于myFocus庫(kù)實(shí)現(xiàn)各種功能的tab選項(xiàng)卡切換效果
這篇文章主要介紹了JS基于myFocus庫(kù)實(shí)現(xiàn)各種功能的tab選項(xiàng)卡切換效果,實(shí)例演示了JS實(shí)現(xiàn)tab嵌套顯示及常用過(guò)度效果的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

