RegExp實例方法和字符串的模式匹配方法的總結

RegExp實例方法

ECMAScript經過RegExp類型來支持正則表達式,建立正則表達式有兩種方式:正則表達式

//使用字面量形式定義正則表達式
var pattern1 = /[bc]at/i

//使用構造函數建立
var pattern2 = new RegExp("[bc]at", "i")

//構造函數接受兩個參數:要匹配的字符串模式和可選的標誌字符串

ECMAScript3中正則表達式字面量始終會共享同一個RegExp實例,而使用構造函數建立的每個新RegExp實例都是一個新實例。ECMAScript5明確規定,使用正則表達式字面量必須像直接調用RegExp構造函數同樣每次都建立新的RegExp實例,故兩種建立方式無區別,使用哪個都無所謂。數組

exec()方法:接受要應用模式的字符串爲參數,返回包含第一個匹配項信息的數組;或者在沒有匹配項的狀況下返回null。返回到數組是Array的實例。函數

      返回的數組包含兩個額外的屬性:index和input。其中,index表示匹配項在字符串中的位置,input表示應用正則表達式的字符串。在數組中,第一項是與整個模式匹配的字符串,其餘項是與模式中的捕獲組匹配的字符串。spa

var text = "mom and dad and baby";
var pattern = /mom( and dad( and baby)?)?/gi;
var matches = pattern.exec(text);

alert(matches.index);    //0
alert(matches.input);    //"mom and dad and baby"
alert(matches[0]);       //"mom and dad and baby"
alert(matches[1]);       //" and dad and baby"
alert(matches[2]);       //" and baby"

test()方法:接受一個字符串參數。在模式與該參數匹配的狀況下返回true,不然返回false 。code

var text = 「000-00-0000」;
var pattern = /\d{3}-d{2}-d{4}/;

pattern.test(text); //true

compile()方法:接收一個字符串參數,用來改變正則表達式的模式匹配值。對象

var pattern = /abc/;
pattern.test("abc");    //true
 pattern.compile("def");
pattern.test("abc");    //false
pattern.test("def");    //true

字符串模式匹配方法

match()方法:接受一個參數(正則表達式或者RegExp對象)。返回一個數組,在數組中,第一項是與整個模式匹配的字符串,其餘項是與正則表達式中的捕獲組匹配的字符串。blog

        (與RegExp對象的exec()方法獲得的結果相同)索引

var text = "cat, bat, sat, fat"; 
var pattern = /.at/;

var matches = text.match(pattern);        
alert(matches.index);        //0
alert(matches[0]);           //"cat"
alert(pattern.lastIndex);    //0

search()方法:接受一個參數(正則表達式或者RegExp對象)。返回字符串中第一個匹配項的索引,沒有找到則返回-1。始終是從字符串開頭向後查找模式。ip

var text = "cat, bat, sat, fat";

var pos = text.search(/at/);
alert(pos);   //1

replace()方法:接受兩個參數(第一個參數能夠是一個RegExp對象或者是一個字符串(這個字符串不會轉換爲正則表達式),第二個參數能夠是一個字符串或者一個函數)字符串

var text = "cat, bat, sat, fat"; 

var result = text.replace("at", "ond");
alert(result);    //"cond, bat, sat, fat"

result = text.replace(/at/g, "ond");
alert(result);    //"cond, bond, sond, fond"

split()方法:接受兩個參數(第一個參數能夠是一個RegExp對象或者是一個字符串(這個字符串不會轉換爲正則表達式),第二個參數可選,用於指定返回的數組的大小)

      基於指定的分隔符將一個字符串分割成多個子字符串,並將結果放在一個數組中。

var colorText = "red,blue,green,yellow";

var colors1 = colorText.split(",");      //["red", "blue", "green", "yellow"]
var colors2 = colorText.split(",", 2);   //["red", "blue"]
var colors3 = colorText.split(/[^\,]+/); //["", ",", ",", ",", ""]
/[^\,]+/  表示不是逗號的連續字符
相關文章
相關標籤/搜索