gpt4 book ai didi

javascript - 正则表达式匹配特定路径与特定查询参数

转载 作者:行者123 更新时间:2023-11-29 10:26:38 24 4
gpt4 key购买 nike

我正在努力创建正则表达式来匹配 URL 路径和可能在任何地方的查询参数。

例如 URL 可以是:

/page?foo=bar&target=1&test=1 <- should match
/page?target=1&test=2 <- should match
/page/nested?foo=bar&target=1&test=1 <- should NOT match
/page/nested?target=1&test=2 <- should NOT match
/another-page?foo=bar&target=1&test=1 <- should NOT match
/another-page?target=1&test=2 <- should NOT match

我需要在 /page 上专门针对参数 target

此正则表达式仅适用于查找参数 \A?target=[^&]+&*

谢谢!

更新:第三方工具需要它来决定在哪个页面上运行实验。它只接受在他们的仪表板上进行常规设置,所以我不能使用 URL 解析器等代码工具。

最佳答案

一般规则是,如果您想解析参数,请使用 URL 解析器,而不是自定义正则表达式。

在这种情况下,您可以使用例如:

# http://a.b/ is just added to make URL parsing work
url = new URL("http://a.b/page?foo=bar&target=1&test=1")
url.searchParams.get("target")
# => 1
url.pathname
# => '/page'

然后在 ifs 中检查这些值:

url = new URL("http://a.b/page?foo=bar&target=1&test=1")

url = new URL("http://a.b/page?foo=bar&target=1&test=1")
if (url.searchParams.get("foo") && url.pathname == '/page' {
# ...
}

另见:

编辑

如果你必须使用正则表达式试试这个:

\/page(?=\?).*[?&]target=[^&\s]*(&|$)

Demo

解释:

  • \/page(?=\?) - 匹配路径(以 / 开头,然后是 page,然后是 ?)
  • .*[?&]target=[^&\s]*($|&) 匹配参数名称 target:
    • 位于任何地方(前面有任何.*)
    • [?&] 前面有 ?&
    • 后跟它的值 (=[^&\s]*)
    • 以参数结尾 ($) 或另一个参数 (&) 结尾

关于javascript - 正则表达式匹配特定路径与特定查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57419840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com