JavaScript如何截取两个特定字符间的子串 实现URL参数提取
从URL查询串提取指定参数值的实现方法
方法1:使用原生URLSearchParams接口(推荐)
这是兼容性覆盖绝大多数现代浏览器、无需手动处理边界的最优方案,自动适配多参数、参数值编码、参数位置随机等场景:
const queryStr = "?retailerKey=A"; // 去除开头的?后传入构造函数 const searchParams = new URLSearchParams(queryStr.slice(1)); const targetVal = searchParams.get("retailerKey"); // 参数不存在时返回null,存在返回对应值 console.log(targetVal); // 输出 A
方法2:基于indexOf手动截取
如果需要兼容极端老旧环境,可以基于indexOf拓展实现,核心是先定位参数名+等号的位置,再向后找值的终止边界:
const queryStr = "?retailerKey=A"; const paramName = "retailerKey"; const paramPrefix = `${paramName}=`; const prefixPos = queryStr.indexOf(paramPrefix); // 匹配不到参数直接返回 if (prefixPos === -1) { console.log("参数不存在"); } else { // 计算值的起始位置:前缀位置 + 前缀长度 const valStart = prefixPos + paramPrefix.length; // 值的终止位置为下一个&的位置,没有则取字符串末尾 let valEnd = queryStr.indexOf("&", valStart); valEnd = valEnd === -1 ? queryStr.length : valEnd; const targetVal = queryStr.slice(valStart, valEnd); console.log(targetVal); // 输出 A }
方法3:正则匹配实现
适合快速实现简单场景的参数提取,注意匹配后要做URL解码处理特殊字符:
const queryStr = "?retailerKey=A"; const matchRes = queryStr.match(/[?&]retailerKey=([^&]*)/); const targetVal = matchRes ? decodeURIComponent(matchRes[1]) : null; console.log(targetVal); // 输出 A
内容的提问来源于stack exchange,提问作者RamAlx
相关产品推荐
相关产品推荐

