从查询字符串中提取带符号的值

Extract values with ampersands from query string

我想从以下查询字符串中提取 baz 值:

foo=bar&baz=qux&norf&corge=grault

问题是 baz 的值包含 &。我使用这样的 lookhead 取得了一些成功:

/baz=(.*)(?=[^=]*&)/

但是,它无法处理行尾或行尾后有多个键值的情况。

是否有可以处理此问题的正则表达式?

baz=([^=]*)(?=&|$)

这应该用于 you.See 演示。

https://regex101.com/r/oC5rY5/1

您可以使用

\bbaz=([^=&]+(?:&[^=&\n]+)?)

demo

如果您有多个包含 & 的值,您可以使用

\bbaz=([^=&]+(?:&[^=&\n]+)*)

another demo

使用以下 regex:

baz=(\w+&\w+)

说明

  1. baz=:按字面匹配字符 baz=(区分大小写)
  2. (\w+&\w+):捕获组 \w+ 匹配任何单词字符 [a-zA-Z0-9_]
  3. &:按字面意思匹配字符&

RegEx101 Demo

var queryString = 'foo=bar&baz=qux&norf&corge=grault';

var value = queryString.match(/baz=(\w+&\w+)/)[1];

document.write(value);