一纱兑、創(chuàng)建正則表達(dá)式
創(chuàng)建正則表達(dá)式和創(chuàng)建字符串類似 因俐, 創(chuàng)建正則表達(dá)式提供了兩種方法 , 一種是采用 new運(yùn)算符妄呕,另一個(gè)是采用字面量方式陶舞。
RegExp 對(duì)象的方法
RegExp 對(duì)象有 3 個(gè)方法:test()、exec() 以及 compile()绪励。
var dog = new RegExp('dog'); // 第一個(gè)參數(shù)字符串
var dog = new RegExp('dog', 'ig'); // 第二個(gè)參數(shù)可選模式修飾符
var dog = /dog/;
var dog = /dog/ig; //字面量方式肿孵。
RegExp 對(duì)象包含兩個(gè)方法 : test() 和 exec() , 功能基本相似 疏魏, 用于測(cè)試字符串匹配 停做。
test()方法在字符串中查找是否存在指定的正則表達(dá)式并返回布爾值 , 如果存在則返回 true 大莫, 不存在則返回 false 蛉腌。
exec() 方法也用于在字符串中查找指定正則表達(dá)式,如果 exec() 方法執(zhí)行成功只厘,則返回包含該查找字符串的相關(guān)信息數(shù)組烙丛。如果執(zhí)行失敗,則返回 null 羔味。
雖然創(chuàng)建正則表達(dá)式對(duì)象比較簡(jiǎn)單河咽,但真正復(fù)雜的卻是用正則語(yǔ)法描述的模式信息。接下來赋元,我們分幾個(gè)小節(jié)分別探討一些模式:
二忘蟹、字符串的正則表達(dá)式方法
例如:
var myPattern = /dog/ig;var theStr = "this is a dog,that is a dog!"console.log(theStr.match(myPattern)); //["dog", "dog"]
var myPattern = /dog/i;var theStr = "this is a dog,that is a dog!"console.log(theStr.search(myPattern)) //10
var myPattern = /dog/i; //注意沒有設(shè)置全局,如果設(shè)置全局搁凸,結(jié)果為:this is a Cat,that is a Cat!var theStr = "this is a dog,that is a dog!"console.log(theStr.replace(myPattern,"Cat")); //this is a Cat,that is a dog!
var myPattern = /\s/ig;var theStr = "this is a dog,that is a dog!"console.log(theStr.split(myPattern)); //["this", "is", "a", "dog,that", "is", "a", "dog!"]媚值,這個(gè)加不加全局g沒有影響!
二护糖、直接量字符
在正則表達(dá)式中杂腰,所有字母字符和數(shù)字都是按照直接量與自身匹配的。同時(shí)椅文,正則表達(dá)式還通過反斜杠“\”加字母來支持某些非字母的字符喂很。見下面的匹配列表:
字符 匹配
字母和數(shù)字 自身 例如: /a/ 匹配 字母 a
\o NUL字符
\t 制表符
\n 換行符
\v 垂直制表符
\f 換頁(yè)符
\r 回車
test()
test() 方法檢索字符串中的指定值。返回值是 true 或 false皆刺。
例子:
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
true
exec()
exec() 方法檢索字符串中的指定值少辣。返回值是被找到的值。如果沒有發(fā)現(xiàn)匹配羡蛾,則返回 null漓帅。
例子 1:
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free"));
由于該字符串中存在字母 "e",以上代碼的輸出將是:
e
compile()
compile() 方法用于改變 RegExp痴怨。
compile() 既可以改變檢索模式忙干,也可以添加或刪除第二個(gè)參數(shù)。
例子:
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
patt1.compile("d");
document.write(patt1.test("The best things in life are free"));
由于字符串中存在 "e"浪藻,而沒有 "d"捐迫,以上代碼的輸出是:
truefalse