正则表达式匹配 &foo= 之间的所有内容,直到它再次出现

Umu*_*vas 1 javascript regex

我正在使用 JavaScript,我需要一个正则表达式来匹配“foo”之间的所有内容。

当我使用以下字符串时。

&foo=test1&foo=test2&foo=test3%20test4
Run Code Online (Sandbox Code Playgroud)

它应该返回

match1: test1
match2: test2
match3: test3%20test4
Run Code Online (Sandbox Code Playgroud)

我尝试了以下表达式

((&foo=)(.*))*
Run Code Online (Sandbox Code Playgroud)

但不幸的是它返回了整个字符串。

如何改进我的正则表达式?

Tho*_*ith 5

我建议使用内置URLSearchParams类,而不是完全使用正则表达式:

const params = new URLSearchParams('&foo=test1&foo=test2&foo=test3%20test4');

params.getAll('foo');
// ["test1", "test2", "test3 test4"]
Run Code Online (Sandbox Code Playgroud)

适用于所有主要浏览器。(如果这对您很重要,则需要 IE 11 的 polyfill。)