如何在JavaScript中获取URL中同名的多组参数(如brand)?
获取URL中带索引的brand参数值
通用思路
- 解析URL的查询字符串,提取所有参数键值对
- 用正则匹配符合
brand[数字]格式的参数键 - 收集匹配到的参数值(可选择保留索引与值的对应关系)
- 根据收集结果判断是否存在目标参数
JavaScript 实现
const url = 'https://www.test.com/test.html?categoryid=4&test1=12&test2=65&brand[0]=val1&brand[1]=val2&test3=15'; const params = new URL(url).searchParams; const brandValues = []; const brandIndexedParams = {}; // 遍历所有查询参数 for (const [key, value] of params) { const keyMatch = key.match(/^brand\[(\d+)\]$/); if (keyMatch) { brandValues.push(value); brandIndexedParams[keyMatch[1]] = value; } } // 输出结果 if (brandValues.length) { console.log('所有brand参数值:', brandValues); console.log('带索引的brand参数:', brandIndexedParams); } else { console.log('未找到任何brand参数'); }
Python 实现
import re from urllib.parse import urlparse, parse_qs url = 'https://www.test.com/test.html?categoryid=4&test1=12&test2=65&brand[0]=val1&brand[1]=val2&test3=15' parsed = urlparse(url) query_params = parse_qs(parsed.query) brand_values = [] brand_indexed_params = {} for key in query_params: match_result = re.match(r'^brand\[(\d+)\]$', key) if match_result: # parse_qs返回的是列表,取第一个元素(单个参数不会重复) param_value = query_params[key][0] brand_values.append(param_value) brand_indexed_params[match_result.group(1)] = param_value # 输出结果 if brand_values: print('所有brand参数值:', brand_values) print('带索引的brand参数:', brand_indexed_params) else: print('未找到任何brand参数')
内容的提问来源于stack exchange,提问作者Klaus Mikaelson
相关产品推荐
相关产品推荐

