Apakah yang salah dengan regex ini apabila saya menggunakan bendera global dan bendera tidak sensitif huruf besar-besaran? Pertanyaan ialah input yang dijana pengguna. Hasilnya sepatutnya [benar, benar].
var query = 'Foo B'; var re = new RegExp(query, 'gi'); var hasil = []; result.push(re.test('Foo Bar')); result.push(re.test('Foo Bar')); //Hasilnya ialah [true, false]
var reg = /^a$/g; untuk(i = 0; i++ < 10;) console.log(reg.test("a"));
Anda menggunakan objek
RegExp
dan melaksanakannya beberapa kali. Pada setiap pelaksanaan, ia diteruskan dari indeks padanan terakhir.Sebelum setiap pelaksanaan, anda perlu "set semula" regex untuk bermula dari awal:
Apa yang dikatakan, mungkin lebih mudah dibaca untuk mencipta objek RegExp baharu setiap kali (overhead sedikit kerana RegExp sudah dicache):
Digunakan dengan
g
标志的RegExp
对象会跟踪匹配发生的lastIndex
jadi dalam perlawanan seterusnya ia akan bermula dari indeks terakhir digunakan dan bukannya bermula dari 0. Lihat contoh: