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(/[^\,]+/); //["", ",", ",", ",", ""]
/[^\,]+/ 表示不是逗號的連續字符