Anahtar = değer çiftlerinden biri &veya ayrılmış ayrılmış oluşan url kodlu dizeleri ayrıştırmak çalışıyorum &.
Aşağıdakiler, anahtarları ve değerleri ayrı sonuç öğelerine ayırarak yalnızca ilk tekrarlamayla eşleşir:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
'1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' dizesinin sonuçları şöyle olacaktır:
['1111342', 'Adam%20Franco']
'G' genel bayrağını kullanmak tüm oluşumlarla eşleşir, ancak ayrılmış anahtarlar ve değerleri değil, yalnızca tam olarak eşleşen alt dizeleri döndürür:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
'1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' dizesinin sonuçları şöyle olacaktır:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Ben dize bölmek &ve her anahtar / değer çifti ayrı ayrı parçalamak rağmen /(?:&|&)?([^=]+)=([^&]+)/, PHP'nin preg_match_all()işlevine benzer desen birden çok kez eşleştirmek için JavaScript düzenli ifade desteği kullanarak herhangi bir yolu var mı?
Aşağıdaki gibi alt-maçlar ile sonuç almak için bir yol hedefliyorum:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
veya
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replaceburada kimsenin önerilmemesi biraz tuhaf .var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });yapılır. JavaScript'teki "matchAll", bir dize yerine yeni bir işleyici işleviyle "değiştir" dir.