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']]
replace
burada 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.