正則表達式☞相關函數

正則表達式對象方法

test方法

var regexp1 = /a/g;
var regexp2 = /a/;
var str = 'abcd';
regexp1.test(str); true
regexp1.test(str); false
regexp1.test(str); true
regexp2.test(str); true
regexp2.test(str); true

當正則表示式是全局模式時,每次調用都會重置正則表達式對象的lastIndex屬性,下一次調用test方法的時候,將會從lastIndex開始查找;非全局模式時,lastIndex屬性始終爲0正則表達式

exec方法

var reg = /a/g;
var strs = 'abcdabcdabcd';
reg.exec(strs); ["a", index: 0, input: "abcdabcdabcd"]
reg.exec(strs); ["a", index: 4, input: "abcdabcdabcd"]
reg.exec(strs); ["a", index: 8, input: "abcdabcdabcd"]
reg.exec(strs); null
reg.exec(strs); ["a", index: 0, input: "abcdabcdabcd"]
var reg1 = /a/;
reg1.exec(strs); ["a", index: 0, input: "abcdabcdabcd"]
reg1.exec(strs); ["a", index: 0, input: "abcdabcdabcd"]
reg1.exec(strs); ["a", index: 0, input: "abcdabcdabcd"]

當正則表示式是全局模式時,每次調用都會重置正則表達式對象的lastIndex屬性,下一次調用test方法的時候,將會從lastIndex開始查找;非全局模式時,lastIndex屬性始終爲0。可是無論正則表達式是全局模式仍是非全局模式,都只返回一個匹配項的相關信息,區別於後面說到的match方法數組

字符串與正則表達式相關的方法

match方法

var reg = /a/g;
var reg1 = /a/;
var strs = 'abcdabcdabcd';
strs.match(reg); ["a", "a", "a"]
strs.match(reg1); ["a", index: 0, input: "abcdabcdabcd"]
strs.match(reg1); ["a", index: 0, input: "abcdabcdabcd"]

當正則表示式是全局模式時,會把全部的匹配項都組成數組返回來;非全局模式時,只返回匹配的第一項。code

search方法

var reg = /a/g;
var reg1 = /a/;
var strs = 'abcdabcdabcd';
strs.search(reg); 0
strs.search(reg); 0
strs.search(reg); 0
strs.search(reg1); 0
strs.search(reg1); 0
strs.search(reg1); 0

無論正則表示式是全局模式仍是非全局模式,只返回匹配的第一項。regexp

replace方法

var reg = /a/g;
var reg1 = /a/;
var strs = 'abcdabcdabcd';
strs.replace(reg, '&'); "&bcd&bcd&bcd"
strs.replace(reg1, '&'); "&bcdabcdabcd"

若是正則表示式是全局模式,替換全部匹配的字符串,若是是非全局模式,只替換匹配的第一項。
字符串與正則相關的三個方法都不會改變正則表達式的屬性,不會改變lastIndex的值對象

相關文章
相關標籤/搜索