正则表达式(补充)
定义一个正则表达式
const 变量名 = /表达式/
const reg = /前端/
匹配看字符串中有无前端俩字
正则对象上的一些方法
test()
用于查看正则表达式与指定的字符串是否匹配
const reg = /前端/
const res = reg.test('学前端,找黑马')
//匹配到返回true,匹配不到返回false
console.log(res)
exec()
查找符合规则的字符串
const reg = /前端/
const res = reg.exec('学前端,找黑马')
console.log(res)

replace()
用于替换字符串中符合规则的字符
const reg = /前端/
const str='学前端,找黑马'
const res = str.replace(reg,'java')
console.log(res)
![]()
match()
在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
const reg = /前端/
const str='学前端,找黑马,前端就业前景好,前端工资高'
const res = str.match(reg)
console.log(res)

修饰符
| i | 忽略大小写 |
| g | 全局匹配 |
const reg = /a/i
console.log(reg.test('a'))//true
console.log(reg.test('ABC'))//true
const reg = /前端/g
const str='学前端,找黑马,前端就业前景好,前端工资高'
const res = str.replace(reg,'java')
console.log(res)
const reg = /前端/g
const str='学前端,找黑马,前端就业前景好,前端工资高'
const res = str.match(reg)
console.log(res)
元字符
边界符
单词边界 \b
const reg = /cat/g
const str = 'The cat scattered his food all over the room'
console.log(str.replace(reg,'dog'))
![]()
const reg = /\bcat\b/
const str = 'The cat scattered his food all over the room'
console.log(str.replace(regzi,'dog'))
字符串边界 ^ $
^:以...开头
$:以...结尾
const reg = /^a/
console.log(reg.test('apple')) //true
const reg = /c$/
console.log(reg.test('abc')) //true
^ $ :在一块,表示必须是精确匹配
const reg = /^a$/
中间写什么就只能匹配什么
console.log(reg.test('a')) //true
console.log(reg.test('aaa')) //false
console.log(reg.test('abca')) //false
量词
*:表示0次或更多次
const reg = /^a*$/
console.log(reg.test('a')) //true
console.log(reg.test('')) //true
console.log(reg.test('aaa')) //true
+:表示1次或更多次
const reg = /^a+$/
console.log(reg.test('a')) //true
console.log(reg.test('')) //false
console.log(reg.test('aaa')) //true
?:表示0次或1次
const reg = /^a+$/
console.log(reg.test('a')) //true
console.log(reg.test('')) //true
console.log(reg.test('aaa')) //false
console.log(reg.test('b')) //false
{n}:只能有n次
const reg = /^a{3}$/
console.log(reg.test('a')) //false
console.log(reg.test('')) //false
console.log(reg.test('aaa')) //true
{n,}:表示大于等于n次
const reg = /^a{2,}$/
console.log(reg.test('a')) //false
console.log(reg.test('')) //false
console.log(reg.test('aaa')) //true
console.log(reg.test('aa')) //true
{n,m}:n-m次
const reg = /^a{2,4}$/
console.log(reg.test('a')) //false
console.log(reg.test('')) //false
console.log(reg.test('aaa')) //true
console.log(reg.test('aa')) //true
字符类
[]:匹配字符集合
/[abc]/:匹配abc中的任意一个
连字符-
/[a-z]/:匹配a到z的26个字母中的任意一个
/[a-zA-Z]/:匹配26个英文字母,不区分大小写
^表示取反(需要写在[]里面)
/[^abc]/:匹配abc之外的任意一个
const reg = /[^0-9]/
console.log(reg.test('aaa111')) //true 能匹配到0-9之外的任意一个字符
.:匹配除换行符之外的任意一个字符
const reg =/./
console.log(reg.test(''));//true
console.log(reg.test('\n'));//false
console.log(reg.test('\r'));//false
预定义:
\d:匹配0-9之间任意一个数字字符;相当于[0-9]
/[0-9]/ <=> /\d/
\D:匹配任意一个非0-9数字的字符;相当于[^0-9]
\s:匹配任意一个空白字符,包括 空格、tab、换行符等;相当于[\t\r\n\v\f]
\S:匹配任意一个非空白字符;相当于[^\t\r\n\v\f]
\w:匹配任意的字母、数字、下划线;相当于[a-zA-Z0-9_]
\W:匹配除字母,数字和下划线以外的字符;相当于[^a-zA-Z0-9_]
分组和分支结构
分组
/ab+/ ab abbbbbbb
/(ab)+/ ab abababab
匹配有一个或多个ab连一块儿的;其中的()提供分组的功能
分组捕获
将YYYY-MM-DD格式的日期替换成MM/DD/YYYY(月日年),。
const reg = /^\d{4}-\d{2}-\d{2}$/
精确匹配;\d<=>[0-9];{4}4位数字
const reg = /^\d{4}-\d{2}-\d{2}$/
const date = '2023-01-05'
console.log(reg.test(date))//true
YYYY-MM-DD的匹配模式为/\d{4}-\d{2}-\d{2}/,它是将整个日期作为一个组(group)匹配起来,我们把这样的叫Group0
如果我们加上括号/(\d{4})-(\d{2})-(\d{2})/,那么分组就是下面的情况:
YYYY-MM-DD Group0
YYYY Group1
MM Group2
DD Group3
我们通过$符获取每个分组匹配的内容;eg.$1代表YYYY,$2代表MM ...
const reg = /^(\d{4})-(\d{2})-(\d{2})$/
const date = '2023-01-05'
console.log(date.replace(reg,'$2/$3/$1')) //01/05/2023
分支结构
| :表示匹配规则1或规则2
const reg = /(java)|(前端)/;
const str1 ="学前端,来黑马"
const str2 = "学java,也可以来黑马"
reg.test(str1)//true
reg.test(str2)//true
相关文章:
正则表达式(补充)
定义一个正则表达式 const 变量名 /表达式/ const reg /前端/ 匹配看字符串中有无前端俩字 正则对象上的一些方法 test() 用于查看正则表达式与指定的字符串是否匹配 const reg /前端/ const res reg.test(学前端,找黑马) //匹配到返回true,匹配不到返回fa…...
第23课-C++-红黑树的插入与旋转
🌇前言 红黑树是一种自平衡的二叉搜索树,因其出色的性能,广泛应用于实际中。Linux 内核中的 CFS 调度器便是一个使用红黑树的例子,这足以说明它的重要性。红黑树的实现通过红黑两种颜色的控制来维持平衡,并在必要时使…...
【C#】C#编程入门指南:构建你的.NET开发基础
文章目录 前言:1. C# 开发环境 VS的基本熟悉2. 解决方案与项目的关系3. 编辑、编译、链接、运行4. 托管代码和CLR4.1 CLR:4.2 C# 代码第编译过程(两次编译的) 5. 命名空间6. 类的组成与分析7. C# 的数据类型7.1 值类型7.2 引用类型…...
[系统安全] PE文件知识在免杀中的应用
0x1 PE文件与免杀思路 基于PE文件结构知识的免杀技术主要用于对抗启发式扫描。 通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的。 修改区段名 1.1 移动PE文件头位置免杀 工具:PeClean SizeOfOptionalHeader字段来描述扩展头的大小,恒定值为…...
相机标定原理
相机标定原理 什么是相机标定相机畸变 什么是相机标定 为了确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,需建立相机成像的几何模型,几何模型参数即为相机参数,求解相机参数的过程就是相机标定。 坐标系 **世界坐标…...
Linux基础开发工具使用
目录 1. 软件包管理器yum 1.1 概念介绍 1.2 更换镜像源(可选) 1.3 工具的搜索/查看/安装/卸载 1.4 优势 2. vim编辑器 2.1 vi和vim 2.2 三种常用模式和操作 2.3 配置vim 3. Linux编译器-gcc/g 4. Linux调试器-gdb 5. make和Makefile 6.…...
蓝牙PBAP协议及Android实现
文章目录 前言一、什么是PBAP协议?PBAP的关键功能 二、PBAP的工作流程PBAP流程 三、PBAP在Android实现关键步骤:1. 检查设备是否支持 PBAP 服务 2. 创建 PBAP 连接3. 发送 OBEX 请求4. 解析 vCard 数据数据存储与展示6. 性能优化建议7. 完整示例…...
Py之pymupdf:基于langchain框架结合pymupdf库实现输出每个PDF页面的文本内容、元数据等
Py之pymupdf:基于langchain框架结合pymupdf库实现输出每个PDF页面的文本内容、元数据等 目录 PyMuPDFLoader类 初始化 属性 方法 __init__(file_path, *, headers=None, extract_images=False, **kwargs) lazy_load() aload() alazy_load() load(**kwargs) load_and…...
LeetCode题解:17.电话号码的数字组合【Python题解超详细,回溯法、多叉树】,知识拓展:深度优先搜索与广度优先搜索
题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits "23" 输出…...
《JVM第10课》内存溢出(OOM)排查过程
文章目录 常用命令1. jps2. jconsole3. jstat4. jmap 工具1.jvisualvm 排查OOM的方法其实很简单很简单。 如果能找到拋OOM的日志,可以在日志里看到是哪一行抛出的OOM异常。如果找不到日志,那么处理方式是导出Java进程的内存快照,然后用工具查…...
Thinkphp6视图介绍
一.MVC MVC 软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller) ThinkPHP6 是一个典型的 MVC 架构 控制器—控制器,用于将用户请求转发给相应的Model进行处理&a…...
躺平成长-人工智能进行编程-(12)
躺平成长: 让每一个人在科技(开源的网络/智能科技对于生活琐事的处理)的帮助下,实现养生反卷,躺平成长。 开源竞争: 当你无法彻底掌握技术的时候,你就开源这个技术,形成技术依赖&a…...
计算机网络中的域名系统(DNS)及其优化技术
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机网络中的域名系统(DNS)及其优化技术 计算机网络中的域名系统(DNS)及其优化…...
Matplotlib库中show()函数的用法
在Matplotlib库中使用show()函数是用于显示绘制的图形的函数。它将图形显示在屏幕上或保存到文件中。show()函数通常在绘制完图形后调用。 Matplotlib是一个用于绘制2D图形的Python库,它提供了丰富的绘图工具和函数,可以用于创建各种类型的图表…...
C#中object和dynamic
在C#中,object和dynamic都是用于存储不同类型值的类型,但它们之间存在一些关键的区别: object object是C#中的基元类型之一,是所有其他类型的最终基类。当你将一个值赋给object类型的变量时,编译器会执行装箱操作&am…...
Spring Cloud Eureka 服务注册与发现
Spring Cloud Eureka 服务注册与发现 一、Eureka基础知识概述1.Eureka两个核心组件2.Eureka 服务注册与发现 二、Eureka单机搭建三、Eureka集群搭建四、心跳续约五、Eureka自我保护机制 一、Eureka基础知识概述 1.Eureka两个核心组件 Eureka Server :服务注册中心…...
【WPF】Prism学习(三)
Prism Commands 1.复合命令(Composite Commanding) 这段内容主要介绍了在应用程序中如何使用复合命令(Composite Commands)来实现多个视图模型(ViewModels)上的命令。以下是对这段内容的解释: …...
1+X应急响应(网络)系统加固:
系统加固: 数据库的重要性: 数据库面临的风险: 数据库加固: 业务系统加固: 安全设备加固: 网络设备加固:...
使用 Grafana api 查询 Datasource 数据
一、使用grafana 的api 接口 官方API 二、生成Api key 点击 Administration -》Users and accss -》Service accounts 进入页面 点击Add service account 创建 service account 点击Add service account token 点击 Generate token , 就可以生成 api key 了 三、进入grafana…...
【电子设计】按键LED控制与FreeRTOS
1. 安装Keilv5 打开野火资料,寻找软件包 解压后得到的信息 百度网盘 请输入提取码 提取码:gfpp 安装526或者533版本都可以 下载需要的 F1、F4、F7、H7 名字的 DFP pack 芯片包 安装完 keil 后直接双击安装 注册操作,解压注册文件夹后根据里面的图示步骤操作 打开说明 STM…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
深度解析:etcd 在 Milvus 向量数据库中的关键作用
目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...

