URL 正则表达式 实例

1. 获取URL指定参数

export function parseQueryString(name: string, url = location.search) {
  const reg = new RegExp(`(^|[?&])${name}=([^?&]*)(&|$)`, 'i');
  return decodeURIComponent(reg.exec(url)?.[2] || '');
}
const url = https://www.cnblogs.com/xuqichun/p/17343547.html?abc=1&id=8888888;
parseQueryString('id', url);

2. 对象拼接为URL参数格式

复制代码
function urlParam(obj) {
  return Object.keys(obj).map((k) => {
    const value = obj[k];
    if (value === '') {
      return '';
    }
    return `${k}=${value}`;
  }).join('&');
}
urlParam({ a: 1, b: 2 });  //a=1&b=2
复制代码

3. 删除URL中指定的参数

function deleteParam(name, url = location.search) {
   const reg = new RegExp(`([&]?${name}=[^&]*&?)`, 'g');
   return url.replace(reg, '')
}
const url = https://www.cnblogs.com/xuqichun/p/17343547.html?abc=1&id=8888888;
deleteParam('abc', url);

4. 获取路由名称( 问号前一个名称)

function getPageName(url = location.href) {
   const path = url?.match('[^/]+(?!.*/)');
   return path && path[0].split('?')[0];
}
const url = 'https://www.cnblogs.com/xuqichun/p/17343547.html?abc=1&id=8888888';
getPageName(url);  // 17343547.html

 5. 获取URL所有的参数名和其对应的值

复制代码
function getKeyValue(url) {
 var result = {};
 var reg = new RegExp('([\?|&])(.+?)=([^&?]*)', 'ig');
 var arr = reg.exec(url);
 while (arr) {
  result[arr[2]] = arr[3];

  arr = reg.exec(url);
 }
 return result;
}
复制代码

注意在 js 中用于匹配的还有一个叫 match,match 是字符串的方法,而 exec 是 RegExp 对象的方法。使用字符串的 match 方法,同时正则表达式指定为全局匹配,那么正则表达式中的分组将没有用,返回的结果是所有匹配正则表达式的子字符串。exec 方法没有使用全局匹配标志时,返回的时间第一个匹配的子字符,如果使用了全局匹配标志,第一次执行从头开始匹配符号的字符串,再次调用,就从上一次匹配结果后开始匹配。

 

参考文章:

https://blog.csdn.net/weixin_41791737/article/details/117661471  // 最简单的方法:JS去除url中某个参数--正则表达式

https://tool.oschina.net/uploads/apidocs/jquery/regexp.html  // 正则表达式全集

posted @   转角遇到春  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示