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的内置对象

    详解 JavaScript 的内置对象 JavaScript 是一门具有面向对象特性的编程语言,在其对面向对象编程的支持中,内置了许多常用的对象。这些对象可以帮助我们完成各种功能,包括日期计算、字符串处理、正则表达式等等。下面我们将详细讲解 JavaScript 的内置对象,以及其应用场景。 原始值包装对象 在 JavaScript 中,原始值是指字符串、数…

    JavaScript 2023年5月27日
    00
  • 用户注册常用javascript代码

    下面是详细讲解“用户注册常用JavaScript代码”的攻略。 JavaScript代码说明 在用户注册界面,常用的JavaScript代码包括表单验证、密码强度检查和数据存储。 表单验证 表单验证是用户注册中必不可少的一部分,其目的是避免用户输入无效、错误或不想要的信息。常用的表单验证方法有以下几种: required属性:该属性用于添加必填项标记。 正则…

    JavaScript 2023年6月10日
    00
  • js replace 与replaceall实例用法详解

    JS的replace()与replaceAll()用法详解 简介 replace()和replaceAll()都是JavaScript中的字符串函数,用于替换字符串中的内容,两者用法相似但仍有区别。本文将详细介绍这两个函数的用法及示例。 replace() replace()函数用于在字符串中查找并替换匹配到的子字符串,它接受两个参数: 被查找的字符串 用于…

    JavaScript 2023年6月10日
    00
  • JS实现利用闭包判断Dom元素和滚动条的方向示例

    下面是“JS实现利用闭包判断Dom元素和滚动条的方向示例”的完整攻略。 什么是闭包? 在JavaScript中,当函数可以访问并操作其作用域之外的变量时,就产生了闭包。 在函数内部定义一个内部函数,在内部函数中访问了外部函数的变量时,就形成了一个闭包。这个内部函数可以访问到外部函数中定义的变量,即使外部函数已经执行结束,这些变量仍然继续存在。 闭包有助于隐藏…

    JavaScript 2023年6月10日
    00
  • JavaScript中常用的正则表达式日常整理(全)

    JavaScript中常用的正则表达式日常整理(全) 正则表达式是处理文本的重要工具,在JavaScript中也经常使用正则表达式来匹配和处理字符串。这里整理了JavaScript中常用的正则表达式,供参考和学习使用。 匹配特定字符 匹配任意字符:. .(点号)表示匹配任意字符,但是除了换行符。比如: let str = "Hello World!…

    JavaScript 2023年5月19日
    00
  • 实例学习Javascript之构建方法、属性

    关于”实例学习Javascript之构建方法、属性”的攻略分享,可以分为以下几个部分来介绍。 什么是构建方法、属性 在JavaScript中,我们通常使用构造函数来创建对象,构造函数中的方法和属性也被称之为构建方法和构建属性。构建方法和属性是指通过构造函数创建出来的对象所具备的一些方法和属性。 如何定义构建方法、属性 通过定义构造函数,我们可以定义出一些构建…

    JavaScript 2023年5月18日
    00
  • 浅谈javascript中的prototype和__proto__的理解

    浅谈Javascript中的prototype和__proto__的理解 Javascript中有两个与对象原型相关的概念——prototype和__proto__,它们在原型继承和对象属性访问时作用重要。下面我们详细讲解它们的理解。 1. prototype prototype是一个对象,它存在于每一个函数(function)中。当我们使用new关键字来调…

    JavaScript 2023年5月27日
    00
  • 犀利的js 函数集合

    犀利的JS函数集合 介绍 犀利的JS函数集合是一些实用的JavaScript函数合集,可以帮助开发人员更高效地编写JavaScript代码。 安装 本函数集合可以直接在浏览器中使用,在HTML中引入js文件即可开始使用。 <script src="sharpjs.js"></script> 使用 类型判断: sha…

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