Javascript 获取链接(url)参数的方法[正则与截取字符串]

yizhihongxing

当需要在JavaScript中获取链接(URL)的参数时,通常我们会考虑使用正则表达式(RegExp)或者简单地截取字符串两种方法来完成。下面,本文将为大家细细讲解这两种方法的具体实现。

方法一:使用正则表达式

1. 获取单个参数的值

假设一个链接为:https://www.example.com/?name=John&age=26&gender=male

我们需要获取参数name对应的值,可以通过正则表达式来实现。

function getQueryParams(name) {
  const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i');
  const match = window.location.search.substr(1).match(reg);
  if (match) {
    return decodeURIComponent(match[2]);
  }
  return null;
}

const nameValue = getQueryParams('name');
console.log(nameValue);
// Output: "John"

上面这段代码中,我们使用了RegExp正则表达式对象来匹配参数name对应的值。其中(^|&)表示参数name前面可能是一个问号(?)或一个&符号;&表示参数name后面必须是一个&符号;i表示忽略大小写。而substr(1)是为了排除问号(?)。

实现了函数之后,只需要传入参数名即可获取参数的值。

2. 获取多个参数的值

如果需要获取链接中的多个参数的值,我们仍然可以使用正则表达式来处理。实现方式与单个参数的值类似,只不过需要在函数中增加遍历所有参数的逻辑。

function getQueryParams() {
  const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i');
  const match = window.location.search.substr(1).match(reg);
  const queryParams = {};
  if (match) {
    for (let i = 1; i < match.length; i += 2) {
      const key = match[i];
      queryParams[key] = decodeURIComponent(match[i + 1]);
    }
  }
  return queryParams;
}

const params = getQueryParams();
console.log(params.name); // Output: "John"
console.log(params.age); // Output: "26"
console.log(params.gender); // Output: "male"

在这段代码中,我们使用了一个for循环来遍历所有查询参数,将参数名和对应的值存储在一个对象中并返回。

方法二:字符串截取

字符串截取是一种较为原始的方式,与正则表达式相比较来说不够灵活,但是在某些场景下仍然有着较好的表现。

1. 获取单个参数的值

与正则表达式相同,需要获取参数name对应的值。下面的代码中,我们使用了字符串的indexOf和substring方法来实现。

function getQueryParam(name) {
  const url = window.location.href;
  const start = url.indexOf(`?${name}=`);
  if (start === -1) {
    return null;
  }
  const end = url.indexOf('&', start);
  const value = url.substring(start + name.length + 2, end === -1 ? url.length : end);
  return decodeURIComponent(value);
}

const nameValue = getQueryParam('name');
console.log(nameValue);
// Output: "John"

上面代码中,indexOf用来查找参数name在链接中的位置,substring用于截取参数值,并且使用了decodeURIComponent将参数值解码。

2. 获取多个参数的值

需要获取链接中的多个参数的值,我们仍然可以使用字符串截取的方式。这里同样可以使用for循环来实现。

function getQueryParams() {
  const url = window.location.href;
  const start = url.indexOf('?');
  if (start === -1) {
    return {};
  }
  const queryParams = {};
  const paramString = url.substring(start + 1);
  const paramList = paramString.split('&');
  for (let i = 0; i < paramList.length; i++) {
    const [key, value] = paramList[i].split('=');
    const decodeValue = decodeURIComponent(value);
    queryParams[key] = decodeValue;
  }
  return queryParams;
}

const params = getQueryParams();
console.log(params.name); // Output: "John"
console.log(params.age); // Output: "26"
console.log(params.gender); // Output: "male"

在这段代码中,我们将参数列表分割成一个数组,然后使用for循环遍历数组中的每个参数,将每个参数截取成键值对,存储在一个对象中并返回。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript 获取链接(url)参数的方法[正则与截取字符串] - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Postman参数化实现过程及原理解析

    Postman参数化实现过程及原理解析 在实际的接口测试过程中,我们经常需要对接口进行多次调用,每次调用时需要更改参数,这样的操作效率非常低下,因此需要使用参数化的方式来简化我们的测试工作。Postman提供了很好的支持,本文将介绍如何使用Postman实现参数化。 参数化实现过程 Postman提供了几种参数化方式,本文将介绍两种最为常用的方式:CSV数据…

    JavaScript 2023年5月19日
    00
  • js编码之encodeURIComponent使用介绍(asp,php)

    JS编码之encodeURIComponent使用介绍(ASP, PHP) 在Web前端开发的过程中,经常需要对URL进行编码,以确保信息可以正确地传递和接收。在JavaScript中,我们可以使用encodeURIComponent函数来进行URL编码操作。本文将对encodeURIComponent的使用介绍进行详细讲解,并提供一些示例代码说明。 什么是…

    JavaScript 2023年6月1日
    00
  • 详解js location.href和window.open的几种用法和区别

    下面是“详解js location.href和window.open的几种用法和区别”的完整攻略。 一、前言 在前端开发中,有时候我们需要通过JS来控制浏览器的跳转或打开新窗口等操作,而其中常用的方法就是location.href和window.open。这两个方法虽然都是用来进行页面跳转或打开新窗口,但它们之间还是存在一些区别的。本文将详细讲解JS中loc…

    JavaScript 2023年6月11日
    00
  • js处理包含中文的字符串实例

    要处理包含中文的字符串,需要注意字符编码的问题以及字符串长度计算的问题。 在JavaScript中,字符串长度可以使用str.length来获取,对于包含中文的字符串,由于中文字符采用的是Unicode编码,因此一个中文字符在JavaScript中通常被视为两个字符。 因此,如果要获取包含中文的字符串的字符串长度,需要将中文字符视为两个字符进行计算。可以使用…

    JavaScript 2023年5月19日
    00
  • js对象关系图 方便dom操作

    JS对象关系图可以用来表示JS中各个对象之间的关系,有利于我们进行DOM操作。以下是实现的详细步骤: 安装JS对象关系图库 我们可以通过npm来安装JS对象关系图库,命令如下:npm install object-graph-js。 创建DOM对象 在接下来的实例中,我们将创建一个包含“Hello, World”的div元素,代码如下: const divE…

    JavaScript 2023年6月10日
    00
  • JavaScript requestAnimationFrame动画详解

    下面是详细讲解“JavaScript requestAnimationFrame动画详解”的完整攻略。 一、什么是requestAnimationFrame requestAnimationFrame是一个用于浏览器动画渲染的API,它可以被用来优化动画循环的性能。相较于使用setTimeout或setInterval方法,使用requestAnimatio…

    JavaScript 2023年6月10日
    00
  • Vue3+Element-Plus 实现点击左侧菜单时显示不同内容组件展示在Main区域功能

    一、准备工作 首先需要创建一个基于Vue3的项目,可以使用Vue CLI来创建,并安装Element-Plus插件。具体细节可以参考Vue CLI和Element-Plus的官方文档。 二、菜单组件的实现 菜单组件采用Element-Plus自带的菜单组件el-menu,需要在菜单组件中引入需要显示的组件,并在点击菜单时将组件插入到Main区域中。 实现的大…

    JavaScript 2023年6月10日
    00
  • iOS中使用JSPatch框架使Objective-C与JavaScript代码交互

    下面是使用JSPatch框架使Objective-C与JavaScript代码交互的完整攻略: 简介 JSPatch 是一个让你在 iOS 应用中实时修复 Bug 的库。它通过在运行时对 JavaScript 脚本的执行来实现 Objective-C 代码的更新和补丁。这个库支持基于 Mocha 语法的 JavaScript 代码编写,也支持 Objecti…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部