Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中为api uri创建正则表达式,以便在之前添加/时获取带有名称和值的查询参数?_Javascript_Regex_Regex Group - Fatal编程技术网

如何在javascript中为api uri创建正则表达式,以便在之前添加/时获取带有名称和值的查询参数?

如何在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

示例API-/API/test/regex/?name=ciara
我想要什么-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]”
)。