欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中的正則表達(dá)式簡明總結(jié)

 更新時(shí)間:2014年04月04日 16:35:17   作者:  
這篇文章主要介紹了JavaScript中的正則表達(dá)式,簡明總結(jié)了正則中的語法含義和RegExp對(duì)象,需要的朋友可以參考下

一、定義正則表達(dá)式的方法

定義正則表達(dá)式的方法有兩種:構(gòu)造函數(shù)定義和正則表達(dá)式直接量定義。例如:

復(fù)制代碼 代碼如下:
var reg1 = new RegExp('\d{5, 11}'); // 通過構(gòu)造函數(shù)定義
var reg2 = /\d{5, 12}/; // 通過直接量定義

正則表達(dá)式直接量字符
       \o:NUL字符(\u0000)
       \t:制表符(\u0009)
       \n:換行符(\u000A)
       \v:垂直制表符(\u000B)
       \f:換頁符(\u000C)
       \r:回車符(\u000D)
       \xnn:由十六進(jìn)制數(shù)nn指定的拉丁字符,例如,\x0A等價(jià)于\n
       \uxxxx:由十六進(jìn)制數(shù)xxxx指定的Unicode字符,例如\u0009等價(jià)于\t
       \cX:控制字符^X,例如,\cJ等價(jià)于換行符\n
正則表達(dá)式錨字符
       ^:匹配字符串的開頭,在多行檢索中,匹配一行的開頭
       $:匹配字符串的結(jié)尾,在多行檢索中,匹配一行的結(jié)尾
       \b:匹配一個(gè)單詞的邊界,簡言之,就是位于字符\w和\W之間的位置,或位于字符\w和字符串的開頭或者結(jié)尾之間的位置([\b]匹配的是退格符)
       \B:匹配非單詞邊界的位置
       (?=p):零寬正向先行斷言,要求接下來的字符都與p匹配,但不能包括匹配p的那些字符
       (?!p):零寬負(fù)向先行斷言,要求接下來的字符串不與p匹配
正則表達(dá)式的字符類
       [...]:方括號(hào)內(nèi)的任意字符
       [^...]:不在方括號(hào)內(nèi)的任意字符
       .:除換行符和其他Unicode行終止符之外的任意字符
       \w:任何ASCII字符組成的單詞,等價(jià)于[a-zA-Z0-9]
       \W:任何不是ASCII字符組成的單詞,等價(jià)于[^a-zA-Z0-9]
       \s:任何Unicode空白符
       \S:任何非Unicode空白符的字符,注意\w和\S不同
       \d:任何ASCII數(shù)字,等價(jià)于[0-9]
       \D:除了ASCII數(shù)字之外的任何字符,等價(jià)于[^0-9]
       [\b]:退格直接量(特例)
正則表達(dá)式的重復(fù)字符語法
       {n, m}:匹配前一項(xiàng)至少n次,但不能超過m次
       {n, }:匹配前一項(xiàng)n次或者更多次
       {n}:匹配前一項(xiàng)n次
       ?:匹配前一項(xiàng)0次或者1次,也就是說前一項(xiàng)是可選的,等價(jià)于{0, 1}
       +:匹配前一項(xiàng)1次或多次,等價(jià)于{1, }
       *:匹配前一項(xiàng)0次或多次,等價(jià)于{0, }
正則表達(dá)式的選擇、分組和引用字符
       |:選擇,匹配的是該符號(hào)左邊的子表達(dá)式或右邊的子表達(dá)式
       (…):組合,將幾個(gè)項(xiàng)組合為一個(gè)單元,這個(gè)單元可通過“*”、“+”、“?”和“|”等符號(hào)加以修飾,而且可以記住和這個(gè)組相匹配的字符串以供此后的任何使用
       (?: …):只組合,把項(xiàng)組合到一個(gè)單元,但是不記憶與改組相匹配的字符
       \n:和第n個(gè)分組第一次匹配的字符相匹配,組是圓括號(hào)中的子表達(dá)式(也有可能是嵌套的),組索引是從左到右的左括號(hào)數(shù),“(?:”形式的分組不編碼
正則表達(dá)式修飾符
       i:執(zhí)行不區(qū)分大小寫的匹配
       g:執(zhí)行一個(gè)全局匹配,簡言之,即找到所有的匹配,而不是在找到第一個(gè)之后就停止
       m:多行匹配模式,^匹配一行的開頭和字符串的開頭,$匹配行的結(jié)尾和字符串的結(jié)尾
用于模式匹配的String方法
       search():它的參數(shù)是一個(gè)正則表達(dá)式,返回第一個(gè)與之匹配的子串的起始位置,如果沒有匹配的子串就返回-1。如果search()的參數(shù)不是正則表達(dá)式,則首先會(huì)通過RegExp構(gòu)造函數(shù)將它轉(zhuǎn)換為正則表達(dá)式,search()不支持全局檢索,因?yàn)樗雎孕揎椃鹓。如:

復(fù)制代碼 代碼如下:

var s = "JavaScript".search(/script/i); // s = 4

 

       replace():它用來執(zhí)行檢索與替換。接收兩個(gè)參數(shù),第一個(gè)是正則表達(dá)式,第二個(gè)是要進(jìn)行替換的字符串。正則表達(dá)式如果設(shè)置的修飾符g,則進(jìn)行全局替換,否則只替換匹配的第一個(gè)子串。如果第一個(gè)參數(shù)不是正則表達(dá)式,則直接搜索該字符串,而不是將其轉(zhuǎn)換為正則表達(dá)式。如:

復(fù)制代碼 代碼如下:
var s = "JavaScript".replace(/java/gi, "Script"); // s =  Script Script

 

       match():它的參數(shù)是一個(gè)正則表達(dá)式,如果不是則通過RegExp轉(zhuǎn)換,返回的是一個(gè)由匹配結(jié)果組成的數(shù)組。如果設(shè)置了修飾符g則進(jìn)行全局匹配。如:

復(fù)制代碼 代碼如下:
var d = '55 ff 33 hh 77 tt'.match(/\d+/g); // d = ["55", "33", "77"]

 

       split():這個(gè)方法用以將調(diào)用它的字符串拆分為一個(gè)子串組成的數(shù)組,使用的分隔符是split()的參數(shù),它的參數(shù)也可以使一個(gè)正則表達(dá)式。如:

復(fù)制代碼 代碼如下:
var d = '123,31,453,645'.split(','); // d = ["123", "31", "453", "645"]
var d = '21 , 123,  44,  64,  67,  3'.split(/\s*,\s*/); // d = ["21", "123", "44", "64", "67", "3"]

二、RegExp對(duì)象
       每個(gè)RegExp對(duì)象都有5個(gè)屬性。屬性source是一個(gè)只讀字符串,包含正則表達(dá)式的文本。屬性global是一個(gè)只讀布爾值,用以說明這個(gè)正則表達(dá)式是否帶有修飾符g。屬性ignoreCase是一個(gè)只讀布爾值,用以說明這個(gè)正則表達(dá)式是否帶有修飾符i。屬性multiline是一個(gè)只讀布爾值,用以說明這個(gè)正則表達(dá)式是否帶有修飾符m。屬性lastIndex是一個(gè)可讀可寫的整數(shù),如果匹配模式帶有g(shù)修飾符,這個(gè)屬性存儲(chǔ)整個(gè)字符串中下一次檢索的開始位置。
       RegExp對(duì)象有兩個(gè)方法。exec()的參數(shù)是一個(gè)字符串,它的功能與match()相似,exec()方法對(duì)一個(gè)指定的字符串執(zhí)行一個(gè)正則表達(dá)式,也就是在一個(gè)字符串中執(zhí)行匹配檢索。如果沒有找到任何匹配就返回null,找到了匹配就返回一個(gè)數(shù)組,這個(gè)數(shù)組的第一個(gè)元素包含的是與正則表達(dá)式相匹配的字符串,余下的元素是與圓括號(hào)內(nèi)的子表達(dá)式相匹配的子串,不論正則表達(dá)式是否有修飾符g,都會(huì)返回一樣的數(shù)組。當(dāng)調(diào)用exec()的正則表達(dá)式對(duì)象具有修飾符g時(shí),它將把當(dāng)前正則表達(dá)式對(duì)象的lastIndex屬性設(shè)置為緊挨著匹配子串的字符位置。當(dāng)同一個(gè)正則表達(dá)式第二次調(diào)用exec()時(shí),它將從lastIndex屬性所指示的字符串處開始檢索,如果exec()沒有發(fā)現(xiàn)任何匹配結(jié)果,它會(huì)將lastIndex重置為0。如:

復(fù)制代碼 代碼如下:
var p = /Java/g;
var text = "JavaScript is more fun than Java!"
var r;
while((r = p.exec(text)) != null) {
       console.log(r, 'lastIndex: ' + p.lastIndex);
}

       另外一個(gè)方法是test(),它的參數(shù)是一個(gè)字符串,用test()對(duì)某個(gè)字符串進(jìn)行檢查,如果包含正則表達(dá)式的一個(gè)匹配結(jié)果,則返回true否則返回false。如:

復(fù)制代碼 代碼如下:
var p = /java/i;
p.test('javascript'); // true

相關(guān)文章

最新評(píng)論