如何在javascript中为api uri创建正则表达式,以便在之前添加/时获取带有名称和值的查询参数?
示例API-/API/test/regex/?name=ciara如何在javascript中为api uri创建正则表达式,以便在之前添加/时获取带有名称和值的查询参数?,javascript,regex,regex-group,Javascript,Regex,Regex Group,示例API-/API/test/regex/?name=ciara 我想要什么-name=ciara试试这个: (?<=\?name=)\w+ (?我们不能在这里使用捕获组,因为重复捕获组将只存储它找到的最后一个匹配项。每次匹配时,它都会用它刚找到的匹配项覆盖上一个匹配项。 因此,我们需要采用两步解决方案,首先验证URL,然后使用matchAll查找所有引用: const regexp = /(?:(?:\&|\?)([^=]+)\=([^&]+))/g; const s
我想要什么-name=ciara试试这个:
(?<=\?name=)\w+
(?我们不能在这里使用捕获组,因为重复捕获组将只存储它找到的最后一个匹配项。每次匹配时,它都会用它刚找到的匹配项覆盖上一个匹配项。
因此,我们需要采用两步解决方案,首先验证URL,然后使用matchAll
查找所有引用:
const regexp = /(?:(?:\&|\?)([^=]+)\=([^&]+))/g;
const str = '/api/test/regex/?name=ciara&p=q&r=s&t=u';
const array = [...str.matchAll(regexp)];
console.log(array);
这将为您提供:
> Array [Array ["?name=ciara", "name", "ciara"], Array ["&p=q", "p", "q"], Array ["&r=s", "r", "s"], Array ["&t=u", "t", "u"]]
因为我们现在有了一个数组,所以只需要迭代它就可以得到所有的查询参数
以下regex
可用于验证是否存在正确的查询字符串:
\/?\?([^=]+)\=([^&]+)(?:\&([^=]+)\=([^&]+))*$
嘿@sweetie,你自己试过什么吗?我试过:~^.+\/(?\w.+)$$s;根据URL字符串的复杂程度,你只需执行以下操作即可生成结果:“/api/test/regex/?name=ciara.split(“?”[1]”
)。