js:正则表达式常用方法总结test、exec、match、matchAll、replace、replaceAll、search

news2024/10/6 16:00:26

文章目录

    • 正则使用
      • test
      • match/matchAll
        • 不加g
        • 加g
        • group 的使用
      • matchAll
        • 不加g
        • 加g
      • exec
        • 不加g
        • 加g
      • search
      • replace

正则使用

常用的几种方法有:test、exec、match、matchAll、replace、replaceAll、search

test

// 匹配返回true,不匹配false
/e/.test("The best things in life are free!")

match/matchAll

不加g

假设有个字符串:

const str = 'abc${a}dfdsd${b}ddd'

我们要获取 {} 里面的值

正则中用小括号包裹起来的为捕获组

'abc${a}dfdsd${b}ddd'.match(/\{(.+?)\}/)

在这里插入图片描述
可以看到,这里数组第 0 项为匹配到的值,第 1 项为捕获组。因为正则没加 g,所以只匹配到了第一项。

加g

在这里插入图片描述
加 g 之后,确实可以匹配到所有的了,但是不会展示捕获组和其他 group、index 等信息。

group 的使用

在要捕获的里面定义一个变量 ?<var>,返回结果的 groups 字段就会有
在这里插入图片描述

matchAll

不加g

在这里插入图片描述

加g

在这里插入图片描述
返回的是一个迭代器,我们结构一下
在这里插入图片描述
可以看到,match 加 g 后无法获取所有的捕获值,而 matchAll 可以

match、matchAll对比:
1.对于match来说,如果正则表达式中有g修饰,结果返回所有与正则表达式匹配的字符串的列表。捕获项会被忽略!
2.对于match来说,如果正则表达式中没有g修饰,结果除了返回第一个匹配外,还会列出其所有捕获项!
3.对于matchAll来说,如果正则表达式有g修饰,其返回的迭代项是一个个的数组,数组中除了包含匹配的完整字符串和所有捕获项外,还包含有index、input、groups这三个属性,index表示当前匹配项在原字符串中的索引位置,input表示输入的原始字符串,groups是一个包含所以分组的对象。
4.对于matchAll来说,如果正则表达式没有g修饰,其结果信息与第3点中描述的完全一致。但其迭代项只有一项,即首个匹配项。

exec

和 match 的返回结果一致

不加g

/\{(.+?)\}/.exec('abc${a}dfdsd${b}ddd')

在这里插入图片描述

加g

在这里插入图片描述
可以看到和不加g一样,你会说那这个 API 如何进行全局检索?
在这里插入图片描述
在这里插入图片描述
全局模式下,exec可以多次执行,每次执行返回的结果同match函数。并且会在正则对象下记录 lastIndex 位置,当匹配不上时返回 null 并且 lastIndex 记录为 0。
所以根据这一点我们可以通过遍历来获取我们想要的结果:

// 返回的数组
let m = null;
while((m = reg.exec(str)) != null){
  // 每次匹配返回的结果
  console.log(m);
  // 每次匹配返回的lastIndex
  console.log(reg.lastIndex);
}
// 最终为0
console.log(reg.lastIndex);

在这里插入图片描述

search

在这里插入图片描述
如果匹配成功,则返回正则表达式在字符串中首次匹配项的索引;否则,返回-1。
不区分全局模式。

replace

// 返回值是新的字符串
const newStr = string.replace(searchvalue,newvalue)
"Mr Blue has a blue house and a blue car".replace(/blue/g, "red");

replace函数的第二个参数newvalue比较特殊,它有一下几个特殊字符串:

$$  直接量符号(就是当做'$$'字符用)
$&  与正则相匹配的字符串
$`  匹配字符串左边的字符 
$’  匹配字符串右边的字符
$1,$2,$,3,…,$n  匹配结果中对应的分组匹配结果

想要消除$的影响可以写成函数的返回值,函数具有一下几个参数:

  • 第一个参数:匹配到的字符串
  • 中间的参数:如果正则使用了分组匹配就为多个否则无此参数
  • 倒数第二个参数:匹配字符串的对应索引位置
  • 最后一个参数:原始字符串

举例

const value = '123-234-234-234'
const pattern = '-'
value.replace(pattern, (item, index) => {
	// item 替换元素,index 替换元素的下标
	console.log(item, index)
	return '/'
})

// 输出:
// - 3
// 123/234-234-234

replace和replaceAll的区别?
当第一个参数为字符串时,replace 只替换匹配到的第一个位置,replaceAll 会替换每一个匹配到的地方。
当第一个参数都是正则表达式时,没有区别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/528537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高通摄像头打不开报错SOF Freeze!

目录 报错日志 代码分析 报错日志 E/mm-camera( 647): <MCT ><ERROR> 95: mct_bus_sof_thread_run: Session 3: Hinting SOF freeze to happen. Sending event to dump infoE/mm-camera( 647): <MCT ><ERROR> 57: server_debug_dump_dat…

大模型来了,自动驾驶还远吗?关键看“眼睛”

感知系统是自动驾驶最重要的模块之一&#xff0c;被视为智能车的“眼睛”&#xff0c;对理解周围环境起到至关重要的作用。随着深度学习以及传感器技术的发展&#xff0c;感知系统呈现出迅猛的发展趋势&#xff0c;涌现出各种新技术&#xff0c;性能指标不断提升。本文将围绕感…

手撕机器学习算法--一步步推导-------NFL(没有免费午餐定理)

文章目录 前言一、NFL是什么&#xff1f;二、表现形式三、介绍四、手动推导 前言 其实机器学习也好&#xff0c;深度学习也罢&#xff0c;在我看来&#xff0c;代码编程终究是不重要的&#xff0c;因为现成的库&#xff0c;其数学原理&#xff0c;其公式推导才是我们需要理解的…

bind查找用法

inclue中的root 也取了名字 引用的时候应该是 引用外面的名字再引用里面的名字&#xff0c;包括rootview也是 binding.errorView.errorView.visibility View.GONE binding.errorView.statusHintIcon?.visibility View.GONE

绩效管理常见的7大误区,越用企业越走下坡路!

绩效管理是企业中非常重要的一个环节&#xff0c;但是很多企业在实施过程中常常会犯一些误区&#xff0c;导致绩效管理的实际效果和预期效果相差甚远。下面我们一起来看看企业中常见的七个绩效管理误区。 1、公司战略和绩效没有关联 绩效管理需要与企业战略相结合&#xff0c;…

【大数据学习篇7】小试牛刀统计并且分析天猫数据

本项目基于搭建大数据环境&#xff0c;通过将数据存放在HDFS上&#xff0c;从HDFS中获取数据&#xff0c;然后根据实际需求通过Spark或Spark SQL对数据进行读取分析&#xff0c;将分析结果存储到HBase表中&#xff0c;最终通过 ECharts数据可视化工具基于Python Web平台实现数据…

【深入浅出】条件概率的链式法则:定义、公式与应用

前言 在概率论的研究中&#xff0c;条件概率是一种非常重要的概念。当多个随机事件发生时&#xff0c;我们有时需要考虑它们同时发生的概率。条件概率的链式法则就是一种用于计算多个随机事件同时发生的概率的方法。本文将会介绍条件概率的链式法则的定义、公式以及应用。 定…

[集合论]集合与二元关系

目录 二元关系导图集合集合表示方法对等差等于两个集合的相对补的或关系 关系序偶与笛卡尔积笛卡尔积 ------不满足交换律 不满足结合律 关系条件 集合与关系划分与覆盖等价关系 (取余、等)商集 偏序关系---自反 反对称 传递(大于等于 小于等于 整除关系 包含 cover 幂集子集关…

入门网络安全,NISP真的有必要考吗?

一、NISP是什么&#xff1f; 国家信息安全水平考试&#xff08;National Information Security Test Program&#xff0c;简称NISP&#xff09;&#xff0c;是由中国信息安全测评中心实施培养国家网络空间安全人才的项目&#xff0c;由国家网络空间安全人才培养基地运营/管理。…

【Git 操作指南】| 撤销远程仓库的 push 以及 git commit 提交

目录 一、撤销 git push二、撤销 git commit 一、撤销 git push 执行git log查看版本日志&#xff0c;找到目标版本。执行git reset --soft <version numbere>&#xff0c;如git reset --soft d8cedc98e008e14a35d3faf424764648fb29d55b&#xff0c;重置为之前提交的版本…

stm32ADC采样结构参数和相关配置

ADC原理&#xff1a; 原理上是将采集保持器与DAC分开的&#xff0c;如下&#xff1a; STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC) 但实际电路可将DAC与采集保持器合并&#xff0c;主要运用的原理就是电容电荷再分配&#xff1a; SAR ADC 逐次逼近型模数转换原理及噪声…

通俗易懂理解spark的DAG

DAG简介 百度百科对DAG的解释用一句话概括:无回路有向图。 Spark的DAG(有向无环图)是一个基本概念,在Spark执行模型中起着至关重要的作用。DAG是“定向的”,因为操作是按特定顺序执行的,而“非循环的”是因为执行计划中没有循环或循环。这意味着每个阶段都取决于前一阶…

分压电阻凑算工具

本工具用于电阻凑算&#xff0c;使用Python3开发&#xff0c;GUI使用Tkinter&#xff0c;无第三方依赖。 项目地址&#xff1a;leidawt/resistor_calculator 使用方法 计算分压电阻值 给定输入、输出电压&#xff0c;计算所需电阻比&#xff0c;根据电阻表选取最接近的电阻组…

Win10和Ubuntu20.04双系统安装教程详解

一.准备材料 U盘&#xff08; 容量>16G&#xff09;、刻录软件( UltraISO)、 Ubuntu 20.04镜像文件 二.查看电脑的信息 查看BIOS模式 "winr"快捷键进入"运行"&#xff0c;输入"msinfo32"回车&#xff0c;出现以下界面&#xff0c;可查看BIOS模…

C# XML的节点遍历、定位、编辑和删除(三)

文章目录 XML样例获取整个文档根开始获取根节点获取最后一个子节点在同级之间向前导航在同级之间向后导航查找节点获取多个节点编辑节点添加节点删除节点小结附录参考 在项目的实际应用中&#xff0c;有很多数据都会保存为XML配置文件。使用率比较高的操作有加载文档&#xff0…

2023-数仓常见问题以及解决方案

01 数据仓库现状 小 A 公司创建时间比较短&#xff0c;才刚过完两周岁生日没多久&#xff1b;业务增长速度快&#xff0c;数据迅速增加&#xff0c;同时取数需求激增与数据应用场景对数据质量、响应速度、数据时效性与稳定要求越来越高&#xff1b;但技术能力滞后业务增长&…

ESXI8中修改虚拟机磁盘格式

厚置备改精简置备 改后 所以&#xff0c;先开启SSH、Shell服务 流程如下&#xff1a; 使用root登录SSH [rootlocalhost:~] [rootlocalhost:~] cd "/vmfs/volumes/HDD1/SOESC" [rootlocalhost:/vmfs/volumes/64398ef2-3cb0bdb4-2552-e8611f32b3ac/SOESC] ls -lh …

R.I.P,又一位程序员巨佬——左耳朵耗子陨落

震惊&#xff01;谣言吧&#xff01;求辟谣&#xff01;默哀&#xff01; 左耳朵耗子&#xff0c;在程序员这个群体里应该属于 GOAT 的存在了&#xff0c;虽然每个人心目中都有自己的 GOAT&#xff0c;但耗子叔的影响力可以说是有目共睹。 我也是在技术群刷到这张图片的&#…

由浅入深理解java集合(二)——集合 Set

一、HashSet类 HashSet简介 HashSet是Set接口的典型实现&#xff0c;实现了Set接口中的所有方法&#xff0c;并没有添加额外的方法&#xff0c;大多数时候使用Set集合时就是使用这个实现类。HashSet按Hash算法来存储集合中的元素。因此具有很好的存取和查找性能。 HashSet特点…

Docker Swarm集群管理

秋风阁(https://focus-wind.com/) 文章目录 基本概念Swarm节点任务与服务 集群管理端口配置创建集群加入集群查看集群退出集群 节点设置节点标签设置节点信息查询 服务管理部署服务查看服务服务日志查看服务重启 Docker Swarm官方文档 Docker Swarm是Docker引擎原生内置的容器…