如何在 javascript 中解析特定查询参数的 URL?

Posted

技术标签:

【中文标题】如何在 javascript 中解析特定查询参数的 URL?【英文标题】:How do I parse a URL for a specific Query Paramter in javascript? 【发布时间】:2019-01-09 11:21:56 【问题描述】:

我将拥有各种包含相同查询参数的 URL:

https://www.example.com/landing-page/?aid=1234

我想通过在网址中搜索“aid”查询参数提取“1234”。

javascript 将在 Zapier 中运行:

Example javascript block in Zapier

Zapier 注释:我们应该通过设置为名为 inputData 的变量的对象向您的代码(作为字符串)提供哪些输入数据?

我在一般的 javascript 或编码方面没有太多经验,但最终结果将是 4 位数的“帮助”值,然后我会在通过 webhook 发布到 API 时引用该值。

编辑:我检查了类似的答案并感谢链接,但是我不确定如何在 Zapier 中使用“inputData”和“url”以及提供的答案。

【问题讨论】:

从这里开始:regex101.com ***.com/questions/901115/… - 标记为重复 - 有 7k 票的优秀答案!!! How can I get query string values in JavaScript?的可能重复 【参考方案1】:

David 来自 Zapier 平台团队。

虽然上面的 cmets 将您指向正则表达式,但我推荐一种更原生的方法:实际解析 url。 Node.js 有一个很棒的标准库来做这件事:

// the following line is set up in the zapier UI; uncomment if you want to test locally
// const inputData = url: 'https://www.example.com/landing-page/?aid=1234'

const url = require('url')
const querystring = require('querystring')

const urlObj = url.parse(inputData.url) /*
Url 
  protocol: 'https:',
  slashes: true,
  auth: null,
  host: 'www.example.com',
  port: null,
  hostname: 'www.example.com',
  hash: null,
  search: '?aid=1234',
  query: 'aid=1234',
  pathname: '/landing-page/',
  path: '/landing-page/?aid=1234',
  href: 'https://www.example.com/landing-page/?aid=1234' 
*/
const qsObj = querystring.parse(urlObj.query) //  aid: '1234' 

return  aid: qsObj.aid 

根据您对要查找的数据始终存在的信心程度,您可能需要在此处执行一些后备操作,但这将非常可靠地找到您要查找的参数。您还可以使用Filter 跟随此代码步骤,以确保依赖aid 的后续步骤在丢失时不会运行。

​如果您还有其他问题,请告诉我!

【讨论】:

非常感谢您的帮助!我最终使用了以下代码,但将替换为您的代码:var url = inputData.url; function getParameterByName(name, url) name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$|%)'), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); var aid = getParameterByName('aid',url); return aidval: aid, url: inputData.url; 太棒了!如果此答案解决了您的问题,请确保对其进行投票并将其标记为正确 (info)。 如果 URL 中没有 aid 查询,是否可以使用默认的 4 位代码填充 aid?似乎aid 是发布 API 的必填字段,无论它是否存在于 URL 中,因此我提供了一个默认的 aid 以防它在 URL 中不存在时使用。我想知道如何才能编辑您的代码块以包含该逻辑。 是的,你可以将最后一行修改为return aid: qsObj.aid || 'DEFAULT CODE'

以上是关于如何在 javascript 中解析特定查询参数的 URL?的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中搜索和替换特定的查询字符串参数值

如何使用各种参数在猫鼬中进行搜索查询?

如何在java中有效地解析查询参数?

如何在嵌套查询的解析器函数中传递根参数?

如何在 Javascript 中创建查询参数?

如何在javascript中访问请求查询字符串参数?