Я намагаюся проаналізувати рядки, кодовані URL-адресою, які складаються з пар = ключ = значення, розділених &або &.
Далі буде відповідати лише перше виникнення, розбиваючи ключі та значення на окремі результати результату:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
Результати для рядка '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' будуть:
['1111342', 'Adam%20Franco']
Використання глобального прапора 'g' відповідатиме всім явищам, але повертає лише повністю відповідні підрядки, а не відокремлені ключі та значення:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
Результати для рядка '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' будуть:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Хоча я міг би розділити рядок на &та розділити кожну пару ключів / значень окремо, чи є якийсь спосіб, використовуючи регулярну підтримку JavaScript для вираження, щоб узгодити кілька випадків шаблону, /(?:&|&)?([^=]+)=([^&]+)/подібного до preg_match_all()функції PHP ?
Я маю на меті якимось чином досягти результатів із розділеними підвідборами на зразок:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
або
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replace.var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });зроблено. "matchAll" в JavaScript - це "замінити" функцією обробника заміни замість рядка.