Saya mencoba untuk menguraikan string url-encoded yang terdiri dari pasangan kunci = nilai yang dipisahkan oleh salah satu &
atau &
.
Berikut ini hanya akan cocok dengan kejadian pertama, memecah kunci dan nilai menjadi elemen hasil yang terpisah:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
Hasil untuk string '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' adalah:
['1111342', 'Adam%20Franco']
Menggunakan flag global, 'g', akan cocok dengan semua kejadian, tetapi hanya mengembalikan sub-string yang sepenuhnya cocok, bukan kunci dan nilai yang dipisahkan:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
Hasil untuk string '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' adalah:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Sementara saya dapat memisahkan string &
dan memecah setiap pasangan kunci / nilai secara terpisah, apakah ada cara menggunakan dukungan ekspresi reguler JavaScript untuk mencocokkan beberapa kemunculan pola yang /(?:&|&)?([^=]+)=([^&]+)/
mirip dengan preg_match_all()
fungsi PHP ?
Saya bertujuan untuk beberapa cara untuk mendapatkan hasil dengan sub-pertandingan terpisah seperti:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
atau
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replace
sini.var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });
selesai "matchAll" dalam JavaScript adalah "replace" dengan fungsi handler pengganti, bukan string.