javascript - 使用正则表达式解析 URL 查询参数

标签 javascript regex url query-string

我想使用正则表达式智能地解析 URL 查询参数。

我必须考虑的事情: 1) 参数可能乱序 2)只有某些参数必须匹配

给定一个查询字符串:“?param1=test1¶m2=test2&parm3=test3” 我想运行 javascript 正则表达式来解析 param1 的值和 param3 的值。

到目前为止我想出的正则表达式是:

/(?:[?&](?:param1=([^&]*)|param3=([^&]*)|[^&]*))+$/g

这个正则表达式似乎对我来说在像 https://regex101.com/ 这样的网站上工作得很好。 .

但是,当我运行下面的 JS 方法时,我总是得到 $2 的未定义,这正是 param1 的值应该解析的内容。有什么帮助或建议吗?

"?param1=test1&param2=test2&param3=test3".replace(
/(?:[?&](?:param1=([^&]*)|param3=([^&]*)|[^&]*))+$/g,
 function ($0, $1, $2, $3) { return $0 + ' ' + $1 + ' ' + $2 + ' ' + $3; });

这将返回 $2 作为未定义,并将 $3 作为 test3 返回。但是,如果我从 url 查询字符串中排除 param2 和 param3,我就可以成功地将 param1 解析为 $2。对此有点困惑。

谢谢!

最佳答案

.*parameterName=([^&|\n|\t\s]+)

使用此模式将为您提供一组参数值。 例如对于这个 URL: https://www.youtube.com/watch?v=aiYpDDHKy18&list=RDaiYpDDHKy18&start_radio=1

.*list=([^&|\n|\t\s]+)

将为您带来: 列表 ID:“RDaiYpDDHKy18”

.*start_radio=([^&|\n|\t\s]+)

会给你数字1。

关于javascript - 使用正则表达式解析 URL 查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434964/

相关文章:

javascript - 从变量内部调用对象属性与变量外部调用对象属性 (JS)

javascript - 为什么要使用 string.toString()?

javascript - 如何在 javascript 中克隆 mongoose 查询对象

python - 在 Python 中添加字母数字中的正则表达式

asp.net-mvc - 使用 IIS 7 重写模块重写 & 符号 URL

javascript - Modernizr javascript代码解释

java - 在模式匹配器中使用变量

java - 在 Java 中使用变量创建正则表达式

javascript - 是否可以通过站点树远程或本地直接爬取站点树?

java - 如何使用 Spring MVC RequestMapping 有多个参数?