Apa arti g
bendera dalam ekspresi reguler?
Apa perbedaan antara /.+/g
dan /.+/
?
javascript
regex
intelis
sumber
sumber
var r = /a/g; console.log(r.test('a'), r.test('a')); // true false
Contoh dalam Javascript untuk menjelaskan:
sumber
g
adalah bendera pencarian global.Bendera pencarian global membuat RegExp mencari pola di seluruh string, membuat larik dari semua kejadian yang dapat ditemukan cocok dengan pola yang diberikan.
Jadi perbedaan antara
/.+/g
dan/.+/
adalah bahwag
versi tersebut akan menemukan setiap kemunculan, bukan hanya yang pertama.sumber
Tidak ada perbedaan antara
/.+/g
dan/.+/
karena keduanya hanya akan mencocokkan seluruh string sekali. Theg
membuat perbedaan jika ekspresi reguler bisa cocok lebih dari sekali atau mengandung kelompok, dalam hal ini.match()
akan mengembalikan array pertandingan bukan array kelompok.sumber
Seperti yang ditunjukkan oleh @matiska,
g
flag tersebut juga menyetellastIndex
properti.Efek samping yang sangat penting dari hal ini adalah jika Anda menggunakan kembali instance regex yang sama terhadap string yang cocok, pada akhirnya akan gagal karena hanya mulai mencari di
lastIndex
.sumber
Selain arti
g
bendera yang telah disebutkan , itu juga mempengaruhiregexp.lastIndex
properti:Referensi: Jaringan Pengembang Mozilla
sumber
G dalam ekspresi reguler adalah definisi pencarian global, artinya akan mencari semua contoh di semua baris.
sumber
Akan memberi contoh berdasarkan string. Jika kita ingin menghapus semua kejadian dari sebuah string. Katakanlah jika kita ingin menghapus semua kemunculan "o" dengan "" dari "hello world"
sumber
g
->
mengembalikan semua pertandinganwithout g
->
mengembalikan pertandingan pertamacontoh:
'1 2 1 5 6 7'.match(/\d+/)
kembali["1", index: 0, input: "1 2 1 5 6 7", groups: undefined]
. Seperti yang Anda lihat, kami hanya bisa mengambil pertandingan pertama"1"
.'1 2 1 5 6 7'.match(/\d+/g)
mengembalikan larik semua kecocokan["1", "2", "1", "5", "6", "7"]
.sumber