摘要:規(guī)定正則表達式直接量的每次運算都返回新對象。二正則對象的屬性和方法屬性個返回一個布爾值,表示是否設置了修飾符,該屬性只讀。返回正則表達式的字符串形式不包括斜杠,該屬性只讀。
一.創(chuàng)建正則表達的方式 1.字面量或稱為直接量(不需要用任何的關鍵字說明它是正則表達式,而是用斜杠來表示正則表達式的開始和結束) eg: var reg = /^w/; 2.對象 eg: var reg = new RegExp("^w"); attentions: 1)因為簡潔方便,字面量創(chuàng)建的方式用的居多。 2)ES5規(guī)定正則表達式直接量的每次運算都返回新對象。 二、 正則對象的屬性和方法 1.屬性(5個) ignoreCase:返回一個布爾值,表示是否設置了i修飾符,該屬性只讀。 global:返回一個布爾值,表示是否設置了g修飾符,該屬性只讀。 multiline:返回一個布爾值,表示是否設置了m修飾符,該屬性只讀。 lastIndex:返回下一次開始搜索的位置。該屬性可讀寫,但是只在設置了g修飾符時有意義。 source:返回正則表達式的字符串形式(不包括斜杠),該屬性只讀。 eg: var reg = /Hello/ig; console.log(reg.ignoreCase); //true console.log(reg.global); //true console.log(reg.multiline); //false console.log(reg.lastIndex); //0 console.log(reg.source); //Hello 2.方法(3個) test(): 檢索字符串中的指定值。返回值是 true 或 false。 exec(): 如果發(fā)現(xiàn)匹配,就返回一個數(shù)組,成員是每一個匹配成功的子字符串,否則返回null。 compile(): 用于改變 RegExp eg: 1) var reg1 = /Hello/ig; console.log(reg1.test("Hello World!"));//true console.log(reg1.lastIndex); //5 console.log(reg1.test("HELLO World!")); //false //attention: 當正則表達式有g修飾時,每一次運算都會自動更新lastIndex,下次運算就從新的起點(lastIndex的值)開始尋求匹配,而不是把字符串按從左到右去檢索。 reg1.lastIndex = 0; console.log(reg1.test("HELLO World!")); //true 2) var reg1 = /Hello/ig; var result = reg1.exec("Hello abc hello def"); console.log(result); //["Hello"] console.log(result.input); //Hello abc hello def console.log(result.index); //0 onsole.log(reg1.exec("Hello abc hello def")); //["hello"] console.log("Hello abc hello def".match(reg1)); // ["Hello", "hello"] attention: exec方法的返回數(shù)組還包含以下兩個屬性: input:整個原字符串。 index:整個模式匹配成功的開始位置(從0開始計數(shù))。 3) var patt1=new RegExp("e"); console.log(patt1.test("The best things in life are free")); //true patt1.compile("d"); console.log(patt1.test("The best things in life are free")); //false 三、語法 1.修飾符及其描述 i 執(zhí)行對大小寫不敏感的匹配。 g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。 m 執(zhí)行多行匹配。 2.元字符(Metacharacter)是擁有特殊含義的字符: . 查找單個字符,匹配除回車( )、換行( ) 、行分隔符(u2028)和段分隔符(u2029)以外的所有字符。 cX 表示Ctrl-[X],其中的X是A-Z之中任一個英文字母,用來匹配控制字符。 [] 匹配退格鍵(U+0008),不要與混淆。 匹配換行鍵。 匹配回車鍵。 匹配制表符tab(U+0009)。 v 匹配垂直制表符(U+000B)。 f 匹配換頁符(U+000C)。