正規表示式☞相關函式

shadowQiao發表於2018-01-18

正規表示式物件方法

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"]

當正則表示式是全域性模式時,會把所有的匹配項都組成陣列返回來;非全域性模式時,只返回匹配的第一項。

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

不管正則表示式是全域性模式還是非全域性模式,只返回匹配的第一項。

replace方法

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

如果正則表示式是全域性模式,替換所有匹配的字串,如果是非全域性模式,只替換匹配的第一項。
字串與正則相關的三個方法都不會改變正規表示式的屬性,不會改變lastIndex的值

相關文章