JavaScriptピットとテクニック:正則lastIndex
1370 ワード
大域
例1:
g
モードでは、test
であろうと、exec
であろうと、変更されたのは同じlastIndex
であり、再び一致したのは新しい文字列であっても、lastIndex
であろうと、前の変化を引き継ぐことができる.例えば、中間に文字列方法が使用されると、str.match(reg)
はlastIndex
に再開される.例1:
let str='abc123';
let reg=/\d+/g; // g, g
if(reg.test(str)){
console.log(reg.lastIndex); // 6
console.log(reg.exec(str)); // null exec , , ,
}
例2: let str = 'abc123bba245';
let reg = /\d+/g;
console.log(reg.exec(str)); // Array [ "123" ]
console.log(reg.lastIndex); // 6
console.log(reg.exec('af4f59l66')); // Array [ "66" ]
console.log(reg.lastIndex); // 9
console.log(reg.exec(str)); // Array [ "245" ]
例3: let str = 'abc123bba245';
let reg = /\d+/g;
console.log(reg.exec(str)); // Array [ "123" ]
console.log(reg.lastIndex); // 6
console.log(str.match(reg)); // Array [ "123", "245" ]
console.log(reg.lastIndex); // 0
console.log(reg.exec('af4f59l66')); // Array [ "4" ]
console.log(reg.lastIndex); // 3
console.log(str.replace(reg, '-')); // abc-bba-
console.log(reg.exec(str)); // Array [ "123" ]