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

当需要在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日

相关文章

  • 基于JavaScript实现前端文件的断点续传

    首先,前端实现文件的上传需要使用HTML5新增的文件上传API,即File和FileReader对象。而实现文件的断点续传可以通过Ajax方式向后台传递文件分块,后台接口则可以将分块数据合并成完整的文件。 以下是一个完整的前端基于JavaScript实现文件的断点续传的攻略: 1. HTML页面设计 在HTML页面中需要添加一个文件上传的表单,和一个进度条用…

    JavaScript 2023年5月27日
    00
  • JavaScript表单验证实现过程详解

    下面我来详细讲解“JavaScript表单验证实现过程详解”的完整攻略。 什么是表单验证 表单验证指的是对用户在表单中输入的内容进行合法性校验,确保用户提交的内容符合要求,避免因用户提交不合法的数据而产生的诸多问题。 表单验证实现的步骤 实现表单验证的基本步骤如下: 获取表单元素 给表单元素添加提交事件 在提交事件中获取表单元素的值 对表单元素的值进行验证 …

    JavaScript 2023年6月10日
    00
  • 今天分享几个少见却很有用的 JS 技巧

    今天分享几个少见却很有用的 JS 技巧 技巧一:使用逻辑运算符对变量进行赋值 在 JavaScript 中,逻辑运算符可以用来对变量进行赋值。比如,我们想要将一个变量的值限制在某一范围内,可以使用以下方式: var num = 5; num = (num <= 10) ? num : 10; console.log(num); // 输出5 num =…

    JavaScript 2023年5月18日
    00
  • js注入 黑客之路必备!

    JS注入是Web安全领域中非常重要的一个议题,也是Web攻击中常用的一种手段。攻击者可以通过JS注入攻击网站或用户,包括窃取用户信息、篡改网页内容、控制用户会话等。 以下是一个简单的JS注入攻击示例: 攻击目标 我们以一个简单的登录页面(login.html)为目标页面,该页面通过使用jQuery库将用户名和密码传递给后台验证,并在验证失败时显示错误提示。页…

    JavaScript 2023年5月19日
    00
  • 详解JavaScript中localStorage使用要点

    详解JavaScript中localStorage使用要点 在现代化的web应用开发中,临时储存数据以提升用户体验已经成为了一个标准操纵。localStorage是在Web应用中临时存储数据的一种方法,存储的数据不会超出用户的本地储存容量,还可以在整个站点内部的任意页面访问。 localStorage的常用操作方法 localStorage的使用方法基本类似…

    JavaScript 2023年5月27日
    00
  • JS中用try catch对代码运行的性能影响分析

    JS中的try-catch是用于异常处理的语句。它用于在代码块中捕获发生的异常,并提供适当的处理方式。 然而,try-catch语句并不是一项低成本操作。在代码块中使用try-catch语句将影响代码的性能,因此需要仔细考虑是否使用它。接下来,我将详细讲解如何分析JS中try-catch语句的性能影响。 1. 测试try-catch语句的性能 要测试JS代码…

    JavaScript 2023年5月28日
    00
  • js判断一个对象是数组(函数)的方法实例

    下面是关于“js判断一个对象是数组(函数)的方法实例”的完整攻略。 判断一个对象是数组的方法 在 JavaScript 中判断一个对象是否为数组的方法有很多种,下面介绍两种比较常用的方法。 方法一:使用 Array.isArray() 使用 Array.isArray() 可以判断一个对象是否为数组,同时可以避免使用 typeof 判断的弊端。 示例代码如下…

    JavaScript 2023年5月27日
    00
  • javascript HTML5文件上传FileReader API

    下面是关于JavaScript HTML5文件上传FileReader API的详细攻略: 什么是FileReader API? FileReader API 是 HTML5 中的一款文件读取 API,使得客户端的 web 应用程序能够异步读取文件(即用户计算机中的本地文件,而不是通过网络获取的文件)。可以使用 FileReader 读取文本文件、二进制文件…

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