Я пытаюсь разобрать строки в кодировке URL, которые состоят из пар ключ = значение, разделенных либо &
, либо &
.
Следующее будет соответствовать только первому вхождению, разбивая ключи и значения на отдельные элементы результата:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
Результаты для строки '1111342 = Адам% 20Franco & 348572 = Боб% 20Jones' будут:
['1111342', 'Adam%20Franco']
Использование глобального флага 'g' будет соответствовать всем вхождениям, но вернет только полностью соответствующие подстроки, а не разделенные ключи и значения:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
Результаты для строки '1111342 = Адам% 20Franco & 348572 = Боб% 20Jones' будут:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Хотя я мог бы разбить строку на &
и разбить каждую пару ключ / значение по отдельности, есть ли способ использовать поддержку регулярных выражений JavaScript для сопоставления нескольких вхождений шаблона /(?:&|&)?([^=]+)=([^&]+)/
, аналогично функции PHP preg_match_all()
?
Я стремлюсь к какому-нибудь способу получить результаты с разделенными под-матчами, например:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
или
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]