如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章