js正则表达式之$1$2$3$4$5$6$7$8$9属性,返回子匹配的结果

在正则表达式中,通过使用括号将某个子字符串匹配成一个组,从而在匹配结果中获取该组的值。而通过$1~$9属性,可以返回匹配文本的子匹配内容。以下是详细解释:

$1, $2, $3, $4, $5, $6, $7, $8, $9属性

这些属性用于获取子匹配到的字符串,其对应的匹配组由圆括号指定。例如:

const regex = /^(\d{4})-(\d{2})-(\d{2})$/;
const dateString = '2021-01-28';
const matchResult = regex.exec(dateString);
console.log(matchResult[1]);
console.log(matchResult[2]);
console.log(matchResult[3]);

以上代码中,当匹配字符串2021-01-28的时候,正则表达式/^(\d{4})-(\d{2})-(\d{2})$/将字符串分为3个匹配组:(\d{4})(\d{2})(\d{2}),分别代表年、月、日的数字部分。通过matchResult[1]matchResult[2]matchResult[3]可以获取到匹配结果的年、月、日部分的文本。

如果正则表达式中有多个括号,则可以通过$1$2$3等属性获取到对应的子匹配文本。例如:

const regex = /([A-Z]\w+)\s([A-Z]\w+)/;
const name = 'Steve Jobs';
const matchResult = regex.exec(name);
console.log(matchResult[1]);
console.log(matchResult[2]);
console.log(`Hello, ${matchResult[1]} ${matchResult[2]}!`);

以上代码中,正则表达式 /([A-Z]\w+)\s([A-Z]\w+)/ 表示匹配一个带空格的两个子字符串列表达式。正则表达式包含两个括号分组,第一个括号分组匹配以大写字母开头的单词,第二个括号分组匹配在第一个分组后的一个空格。

在执行上述代码后,控制台将打印以下结果:

Steve
Jobs
Hello, Steve Jobs!

这里$1对应Steve$2对应Jobs

总结

使用$1$2$3等属性可以很方便地访问正则表达式的子匹配文本。但是如果使用这些属性访问一个没有匹配的文本,则将会返回undefined。此外,如果正则表达式存在很多括号分组,那么建议使用具有更好可读性和可维护性的变量名,而不是使用$1$2等直接的属性名称。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js正则表达式之$1$2$3$4$5$6$7$8$9属性,返回子匹配的结果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js 函数式编程学习笔记

    下面是学习 js 函数式编程的完整攻略: 1. 学习函数式编程基础 函数式编程是一种编程范式,需要掌握一些基础概念和语法,例如: 纯函数:不会修改外部状态,返回结果只依赖于输入参数 函数柯里化:把接受多个参数的函数变换成接受一个单一参数的函数 高阶函数:函数可以作为参数或返回值使用 可以通过阅读函数式编程相关的书籍或文章来学习这些基础知识。推荐的书籍有《Ja…

    JavaScript 2023年6月10日
    00
  • 防止浏览器记住用户名及密码的简单实用方法

    请看下面的解释: 防止浏览器记住用户名及密码的简单实用方法 如果你担心你保存在浏览器中的用户名和密码被盗取或者暴露,那么最好的防范措施是不允许浏览器记住这些信息。虽然浏览器自带的自动填充功能可以为用户省去不少麻烦,但也有可能被利用导致泄露用户隐私,甚至容易导致经济损失。这里提供几种简单而实用的方法来防止浏览器记住你的用户名和密码。 方法一:添加autocom…

    JavaScript 2023年6月11日
    00
  • 深入理解vue3中的reactive()

    当谈到Vue的响应式系统时,有一个重要的函数:reactive()。在Vue3中,reactive()是我们创建响应式对象的首选方法。 1. reactive()函数的作用 reactive()函数可将一个普通JavaScript对象转换为响应式对象,从而使对象的属性变为可观察和自动更新的。这意味着,当响应式对象的某个属性发生变化时,Vue会自动使用新的值重…

    JavaScript 2023年6月10日
    00
  • js 判断数据类型的几种方法

    当我们在使用JavaScript编写程序时,需要经常判断变量的数据类型,以便执行不同的操作。本文将介绍JS判断数据类型的几种方法。 方法一:typeof操作符 typeof操作符用于判断JS数据类型,返回值为一个字符串。它可以判断的数据类型有:“undefined”、“boolean”、“number”、“string”、“object”(注意:null也是…

    JavaScript 2023年6月10日
    00
  • JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面

    设置Cookie的有效期为当天24点可以分为以下两步: 获取当天的24点的时间戳 将Cookie的有效期设置为步骤1中获取的时间戳 具体实现方法如下所示: 第一步:获取当天24点的时间戳 function getTodayEndTime() { var now = new Date(); // 获取当前时间 var today = new Date(now.…

    JavaScript 2023年6月11日
    00
  • ES6扩展运算符的使用方法示例

    下面是“ES6扩展运算符的使用方法示例”的完整攻略。 什么是ES6扩展运算符? ES6扩展运算符,也称为…,它可以将一个数组或对象展开成自己的元素。 使用场景 在开发中,我们经常需要用到数组或对象的合并、去重、替换等操作,ES6扩展运算符就提供了方便快捷的方式。 使用方法 1. 数组的合并 假设我们有两个数组arr1和arr2,需要将它们合并成一个新的数…

    JavaScript 2023年6月11日
    00
  • jquery checkbox 勾选的bug问题解决方案与分析

    关于“jQuery Checkbox 勾选的 Bug 问题解决方案与分析”,我们来进行一番详细的讲解。 问题描述 在 jQuery 中,我们经常会用到“复选框”(checkbox)这个元素。比如说我们希望用户在注册时选择自己的性别,就可以用到男、女两个 checkbox。但是在实际开发中,我们可能会遇到以下问题: 当用户选择某一个 checkbox 时,其他…

    JavaScript 2023年6月10日
    00
  • HTML5 script元素async、defer异步加载使用介绍

    接下来我将为你详细讲解一下“HTML5 script元素async、defer异步加载使用介绍”的完整攻略。 什么是async、defer异步加载 在HTML5中,script标签有两个属性可以实现异步加载,分别是async和defer。 async属性定义了脚本是否异步加载,异步加载的脚本不会阻塞页面的加载。 defer属性定义了脚本是否延迟执行,延迟执行…

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