当前位置: 首页 > news >正文

正则表达式(补充)

定义一个正则表达式

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(学前端&#xff0c;找黑马) //匹配到返回true,匹配不到返回fa…...

第23课-C++-红黑树的插入与旋转

&#x1f307;前言 红黑树是一种自平衡的二叉搜索树&#xff0c;因其出色的性能&#xff0c;广泛应用于实际中。Linux 内核中的 CFS 调度器便是一个使用红黑树的例子&#xff0c;这足以说明它的重要性。红黑树的实现通过红黑两种颜色的控制来维持平衡&#xff0c;并在必要时使…...

【C#】C#编程入门指南:构建你的.NET开发基础

文章目录 前言&#xff1a;1. C# 开发环境 VS的基本熟悉2. 解决方案与项目的关系3. 编辑、编译、链接、运行4. 托管代码和CLR4.1 CLR&#xff1a;4.2 C# 代码第编译过程&#xff08;两次编译的&#xff09; 5. 命名空间6. 类的组成与分析7. C# 的数据类型7.1 值类型7.2 引用类型…...

[系统安全] PE文件知识在免杀中的应用

0x1 PE文件与免杀思路 基于PE文件结构知识的免杀技术主要用于对抗启发式扫描。 通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的。 修改区段名 1.1 移动PE文件头位置免杀 工具&#xff1a;PeClean SizeOfOptionalHeader字段来描述扩展头的大小&#xff0c;恒定值为…...

相机标定原理

相机标定原理 什么是相机标定相机畸变 什么是相机标定 为了确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系&#xff0c;需建立相机成像的几何模型&#xff0c;几何模型参数即为相机参数&#xff0c;求解相机参数的过程就是相机标定。 坐标系 **世界坐标…...

Linux基础开发工具使用

目录 1. 软件包管理器yum 1.1 概念介绍 1.2 更换镜像源&#xff08;可选&#xff09; 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协议&#xff1f;PBAP的关键功能 二、PBAP的工作流程PBAP流程 三、PBAP在Android实现关键步骤&#xff1a;1. 检查设备是否支持 PBAP 服务 2. 创建 PBAP 连接3. 发送 OBEX 请求4. 解析 vCard 数据数据存储与展示6. 性能优化建议7. 完整示例&#xf…...

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 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "23" 输出…...

《JVM第10课》内存溢出(OOM)排查过程

文章目录 常用命令1. jps2. jconsole3. jstat4. jmap 工具1.jvisualvm 排查OOM的方法其实很简单很简单。 如果能找到拋OOM的日志&#xff0c;可以在日志里看到是哪一行抛出的OOM异常。如果找不到日志&#xff0c;那么处理方式是导出Java进程的内存快照&#xff0c;然后用工具查…...

Thinkphp6视图介绍

一.MVC MVC 软件系统分为三个基本部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09; ThinkPHP6 是一个典型的 MVC 架构 控制器—控制器&#xff0c;用于将用户请求转发给相应的Model进行处理&a…...

躺平成长-人工智能进行编程-(12)

躺平成长&#xff1a; 让每一个人在科技&#xff08;开源的网络/智能科技对于生活琐事的处理&#xff09;的帮助下&#xff0c;实现养生反卷&#xff0c;躺平成长。 开源竞争&#xff1a; 当你无法彻底掌握技术的时候&#xff0c;你就开源这个技术&#xff0c;形成技术依赖&a…...

计算机网络中的域名系统(DNS)及其优化技术

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 计算机网络中的域名系统&#xff08;DNS&#xff09;及其优化技术 计算机网络中的域名系统&#xff08;DNS&#xff09;及其优化…...

Matplotlib库中show()函数的用法

在Matplotlib库中使用show()函数是用于显示绘制的图形的函数。它将图形显示在屏幕上或保存到文件中。show()函数通常在绘制完图形后调用。 Matplotlib是一个用于绘制2D图形的Python库&#xff0c;它提供了丰富的绘图工具和函数&#xff0c;可以用于创建各种类型的图表&#xf…...

C#中object和dynamic

在C#中&#xff0c;object和dynamic都是用于存储不同类型值的类型&#xff0c;但它们之间存在一些关键的区别&#xff1a; object object是C#中的基元类型之一&#xff0c;是所有其他类型的最终基类。当你将一个值赋给object类型的变量时&#xff0c;编译器会执行装箱操作&am…...

Spring Cloud Eureka 服务注册与发现

Spring Cloud Eureka 服务注册与发现 一、Eureka基础知识概述1.Eureka两个核心组件2.Eureka 服务注册与发现 二、Eureka单机搭建三、Eureka集群搭建四、心跳续约五、Eureka自我保护机制 一、Eureka基础知识概述 1.Eureka两个核心组件 Eureka Server &#xff1a;服务注册中心…...

【WPF】Prism学习(三)

Prism Commands 1.复合命令&#xff08;Composite Commanding&#xff09; 这段内容主要介绍了在应用程序中如何使用复合命令&#xff08;Composite Commands&#xff09;来实现多个视图模型&#xff08;ViewModels&#xff09;上的命令。以下是对这段内容的解释&#xff1a; …...

1+X应急响应(网络)系统加固:

系统加固&#xff1a; 数据库的重要性&#xff1a; 数据库面临的风险&#xff1a; 数据库加固&#xff1a; 业务系统加固&#xff1a; 安全设备加固&#xff1a; 网络设备加固&#xff1a;...

使用 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…...

Unity游戏接入TapTap登录,从后台配置到打包上线的完整避坑指南

Unity游戏接入TapTap登录的全流程避坑指南&#xff1a;从配置到上线的实战经验 在独立游戏开发领域&#xff0c;TapTap平台凭借其庞大的用户基础和便捷的登录系统&#xff0c;已成为许多开发者的首选接入方案。然而&#xff0c;从后台配置到最终打包上线的完整流程中&#xff0…...

RAG 系列(十七):Agentic RAG——让 Agent 主导检索过程

Pipeline RAG 的沉默失败 前面十几篇一直在优化一件事:怎么让检索结果更好。更好的分块、更精准的排序、更聪明的问法、CRAG 纠偏、Graph RAG 关系遍历…… 但有一件事始终没变:无论检索结果好不好,都会被传给 LLM 生成答案。 Pipeline RAG 的流程是线性的、固定的: 问…...

【技术解析】基于主成分分析与神经网络的航空安全风险建模:从QAR数据预处理到实时预警仿真

1. 航空安全风险建模的技术背景 每次坐飞机时&#xff0c;你可能都好奇过&#xff1a;机长是如何确保飞行安全的&#xff1f;其实背后有一整套数据驱动的安全体系在支撑。QAR&#xff08;快速存取记录器&#xff09;就像飞机的"黑匣子"&#xff0c;记录了上百项飞行参…...

如何在Mac上轻松导出微信聊天记录:WeChatExporter完整指南

如何在Mac上轻松导出微信聊天记录&#xff1a;WeChatExporter完整指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因误删重要微信聊天记录而焦虑&#xff1f…...

3分钟完成30分钟任务:词达人自动化助手终极指南

3分钟完成30分钟任务&#xff1a;词达人自动化助手终极指南 【免费下载链接】cdr 微信词达人&#xff0c;高正确率&#xff0c;高效简洁。支持班级任务及自选任务 项目地址: https://gitcode.com/gh_mirrors/cd/cdr 你是否厌倦了每周在词达人平台上花费数小时完成枯燥的…...

从分布式到可分发:大规模软件制品分发架构设计与实践

1. 项目概述&#xff1a;从“分布式”到“可分发”的思维跃迁最近在梳理团队内部的基础设施时&#xff0c;又翻出了distr-sh/distr这个项目。说实话&#xff0c;第一次看到这个仓库名&#xff0c;我下意识地把它归类为又一个“分布式系统”框架。但当我真正点进去&#xff0c;花…...

别再让用户等上传!用@ffmpeg/ffmpeg在浏览器里直接压缩视频(附ThinkPHP项目实战)

浏览器端视频压缩实战&#xff1a;基于FFmpeg.wasm与ThinkPHP的高效集成方案 引言 在当今内容为王的互联网时代&#xff0c;视频已成为用户生成内容&#xff08;UGC&#xff09;的核心载体。然而&#xff0c;高清视频带来的大文件体积往往成为用户体验的瓶颈——上传等待时间长…...

设计师速存!Midjourney未公开的风格隐藏开关:--style raw、--s 750、--no texture三者协同作用的神经渲染原理(GPU显存占用下降41%实测)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;设计师速存&#xff01;Midjourney未公开的风格隐藏开关&#xff1a;--style raw、--s 750、--no texture三者协同作用的神经渲染原理&#xff08;GPU显存占用下降41%实测&#xff09; Midjourney v6.1…...

基于RP2040的客制化宏键盘:从硬件设计到KMK固件开发全攻略

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫clawdpad&#xff0c;作者是kudretyilmazz。乍一看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你对机械键盘、客制化输入设备或者桌面自动化感兴趣&#xff0c;那这个项目绝对值得你花时间…...

量化部署终极指南:从GPTQ到AWQ,精度损失与显存节省的平衡艺术

系列导读 你现在看到的是《本地大模型私有化部署与优化:从入门到生产级实战》的第 7/10 篇,当前这篇会重点解决:帮你搞懂每种量化方法的优劣,用最少显存跑最大模型,精度损失可控。 上一篇回顾:第 6 篇《RAG知识库实战:LangChain+Chroma搭建本地问答系统,解决幻觉与知…...