JavaScript正则表达式

news2024/11/27 12:47:00

1.介绍
2.语法
3.元字符
4.修饰符

目标:学习正则表达式概念及语法,编写简单的正则表达式实现字符的查找或检测。

一、介绍

1.什么是正则表达式
正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。(正则表达式也是对象)
2.正则表达式有什么作用?
表单验证(匹配)
过滤敏感词(替换)
字符串中提取我们想要的部分(提取)
3.正则表达式在JavaScript中的使用场景:
①验证表单:用户名表单只能输入英文字母、数字或者下划线,昵称输入框中可以输入中文(匹配)
②过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等

二、语法

JavaScript中定义正则表达式的语法有两种
1.定义正则表达式语法:

  const 变量名 = /表达式/

其中/ /是正则表达式字面量
例如:

  const reg = /前端/

2.判断是否有符合规则的字符串:
test()方法 用来查看正则表达式与指定的字符串是否匹配
语法:

regObj.test(被检测的字符串)
const str = '学习前端,前端'
//正则表达式使用:
//1.定义规则:
const reg = /前端/
//2.是否匹配
console.log(reg.test(str))//true

3.检索(查找)符合规则的字符串:
exec()方法 在一个指定字符串中执行一个搜索匹配
语法:
regObj.exec(被检测字符串)

const str1 = '前端大会';
const reg1 = /前端/
console.log(reg1.exec(str))//返回数组

如果匹配成功,exec()方法返回一个数组,否则返回null

三、元字符

1.普通字符:
大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如:所有的字母和数字。
普通字符只能匹配字符串中与它们相同的字符
2.元字符(特殊字符)
一些具有特殊含义的字符,可以极大提高灵活性和强大的匹配功能。
*比如:规定用户只能输入英文26个英文字母,普通字符的话:abcdefg…
*但是换成元字符写法:[a-z]
3.对众多元字符进行分类
(1)边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)
提示字符所处的位置
在这里插入图片描述
如果^和$在一起,表示必须精确匹配

//元字符
console.log(//.test('哈'))//true
console.log(//.test('二哈'))//true

//1.边界符
console.log(/^哈/.test('哈'))//true
console.log(/^哈/.test('二哈'))//false
console.log('-----------------------')

//2.如果^和$在一起,表示必须精确匹配
console.log(/^哈$/.test('哈'))//true 只有这种情况为true,其他全是false
console.log(/^哈哈$/.test('哈哈'))//false

(2) 量词(表示重复次数)
设定某个模式出现的次数
在这里插入图片描述

console.log(/^哈$/.test('哈'))//true
console.log(/^哈$/.test('哈哈'))//true
console.log(/^哈$/.test('二哈'))//false

//{n}
console.log(/^哈{1}$/.test('哈'))//true
console.log(/^哈{1}$/.test('哈哈'))//false

(3)字符类(比如\d表示0-9)

①[]匹配字符集合
后面的字符串只要包含abc中任意一个字符,都返回true

 console.log(/[abc]/.test('andy'))//true
 console.log(/[abc]/.test('baby'))//true
 console.log(/[abc]/.test('cry'))//true
 console.log(/[abc]/.test('diy'))//false
 
console.log(/^[abc]$/.test('ab'))//false
console.log(/^[abc]{2}$/.test('ab'))//true

[]里面加上^取反符号
*[^a-z]匹配除了小写字母以外的字符
*注意要写到中括号里面
②.(点)匹配除换行符之外的任何单个字符
③预定义:某些常见模式的简写方式
在这里插入图片描述
日期格式:^\d{4}-\d{1,2}-\d{1,2}

四、修饰符

1.修饰符约束正则执行的某些细节行为,如:是否区分大小写、是否支持多行匹配等
2.语法:
/表达式/修饰符
*i是单词ignore的缩写,正则匹配时字母不区分大小写
*g是单词global的缩写,匹配所有满足正则表达式的结果

console.log(/a/i.test('a'))//true
console.log(/a/i.test('A'))//true

替换文本replace
语法:

字符串.replace(/正则表达式/,'替换的文本')
const str = 'java是一门编程语言,学完JAVA'
// const re = str.replace(/java/ig,'前端')
const re = str.replace(/java/gi,'前端')
console.log(re)//前端是一门编程语言,学完前端

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

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

相关文章

设计模式之~原型模式

定义:用原型实例指导创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。 优点: 一般在初始化的信息不发生变化的情况下,克隆是最…

触摸屏驱动的问题,在C站搜文章一下午解决不了,最后ChatGpt解决了

目录 一、遇到问题二、在C站搜索文章去解决问题的收获三、用 ChatGpt 去解决的收获四、总结 一、遇到问题 现实问题: 有一个基于Linux4.19内核开发了,在海思SS528芯片运行的系统,用鼠标可以正常使用。 现在要求使用一块公司开发的 多点触控屏…

ES+Redis+MySQL,这个高可用架构设计

一、背景 会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。 …

window10安装vim编辑器

我们在做git操作的时候,很多文字编辑工作会默认打开 Vim 编辑器来进行操作。 Vim 是一个高度可配置的文本编辑器,旨在让创建和更改任何类型的文本变得非常高效。大多数 UNIX 系统和 Apple OS X 都将它作为vi包含在内,用惯了Linux中的Vim编辑器…

机器学习实战7-基于机器学习算法预测相亲成功率

大家好,我是微学AI,今天给大家介绍一下机器学习实战7-基于机器学习算法预测相亲成功率,随着社会的发展,大家都忙于事业,对自己的终身大事就耽搁了,相亲是一种传统的寻找伴侣的方式,随着时代的发…

谷歌训了28个15亿参数模型,说明数据对大模型训练的影响

夕小瑶科技说 原创 作者 | Python 随着ChatGPT的爆火,大规模语言模型(Large Language Model,LLM)如日中天。然而,由于相关数据细节并不公开,相关研究大多都是盲人摸象式探索,缺乏系统的经验指导…

关于打卡小程序可能会遇到的部分问题【华为云Astro低代码体验季】

关于打卡小程序可能会遇到的部分问题【华为云Astro低代码体验季】 前提一、可能遇到的问题二、 改进 前提 已经注册华为云账号且浏览过 :华为云Astro制作打卡小程序,在此基础上可能会遇到的问题 一、可能遇到的问题 当创建完成应用后,如果…

设计模式之~外观模式

定义: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 结构图: 区分中介模式: 门面模式对外提供一个接口 中介模式对内提供一个接口 优点: 松耦…

【算法题解】32. 验证二叉搜索树的递归解法

这是一道 中等难度 的题 https://leetcode.cn/problems/validate-binary-search-tree/ 题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含…

【瑞萨RA_FSP】DMAC/DTC编程实战

文章目录 一、DMAC存储器到存储器传输二、DTC外部中断触发传输 一、DMAC存储器到存储器传输 1. FSP配置 打开该工程的 FSP 配置界面。然后按如图步骤加入 DMAC。 加入 DMAC 后如下图所示。 单击上图中新添加的 r_dmac 框,然后在左下角的“属性”窗口配置 DMAC 模…

一分钟学一个 Linux 命令 - cd

前言 大家好,我是 god23bin。欢迎来到这个系列,每天只需一分钟,记住一个 Linux 命令不成问题。今天让我们从 cd 命令开始,掌握在 Linux 系统中切换目录的技巧。 什么是 cd 命令? cd 命令来自这么一个词语&#xff0…

liftOver 不同版本基因组文件相互转化

大家好,我是邓飞。前一段时间有小伙伴在星球提问:想将不同版本的SNP数据合并,不想重新call snp,想把绵羊的V2和V4版本的数据合并,具体来说,是V2转为V4然后与V4合并。 我建议用liftOver软件进行处理&#xf…

SAP-MM-采购折扣知识与会计处理

采购折扣,按折扣的方式和性质可以分为商业折扣和现金折扣两种方式。 商业折扣是指购货方批量进货时,要求销货方按零售价格打一个折扣而少支付的货款金额。企业之间的商品购销活动中,商业折扣是一种较常见的交易现象。 现金折扣则是指在赊购条…

数列DP进阶

目录 一,斜率优化 1,斜率优化原理 2,凸包和斜率计算 3,实战 黑暗爆炸 - 4709 柠檬 二,else 力扣 644. 子数组最大平均数 II(最大子段和二分) ​力扣 646. 最长数对链 力扣 1235. 规划兼…

浅科普一下计算机发展史阶段及那些不为人知的重要里程碑

目录 〇、前言 一、计算机发展历史阶段 二、计算机发展史中重要的里程碑 三、计算机对人类社会发展的重要性 四、计算机的应用领域 五、常见计算机辅助技术 六、总结 〇、前言 计算机的诞生无疑对人类社会的发展起着至关重要的巨大作用。计算机发明者名叫约翰冯诺依曼&a…

SAP-MM-发票-采购运费

采购运费是采购业务中一种特殊的定价,在SAP系统中,交货成本和其相近,是指在货物交付过程中发生的运输成本,只要有货物交付,就会有运费,而运费或者由采购方承担,或者由销售方承担,国内…

03SpringCloud Docker

Docker (1)从VM与Docker框架中,直观上VM多了一层Guest OS,同时Hypervisor会对硬件资源进行虚拟化,docker直接使用硬件资源,所以资源利用率相对docker低。 (2)openstack能够以10台/min的速度创建…

SSM框架学习-拦截器

1. 简介 在Spring框架中,拦截器是一种很重要的组件,它们允许在请求到达控制器之前或之后执行一些代码。拦截器在请求处理的特定点进行拦截,然后通过逻辑来决定是否将控制器的处理传递给下一个处理程序。 在Spring中,拦截器是由实现…

【MATLAB速成】知识点总结(通俗易懂,学不会来打我)

【MATLAB速成】知识点总结(通俗易懂,学不会来打我) 一、概念 MATLAB的中文名称是(矩阵实验室),英文全称是(Matrix Laboratory),是一种以(矩阵计算&#xff…

【学习日记2023.5.30】之 管理端订单模块完善_调用百度地图优化用户端提交订单是否超出配送距离

文章目录 9. 管理端订单模块完善9.1 需求分析和涉及9.2 代码开发Controller层Service层接口Service层实现类Mapper层 9.3 功能测试9.4 提交代码9.5 优化用户下单功能,引入距离判断 9. 管理端订单模块完善 订单搜索各个状态的订单数量统计查询订单详情接单拒单取消订…