JS -正则表达式

正则表达式

关于正则表达式,其实我写过几篇了,但是真正的正则表达式其实主要用于定义一些字符串的规则,计算机根据给出的正则表达式,来检查一个字符串是否符合规则。
我们来看一下,在JS中如何创建正则表达式对象。

语法

第一种创建方式

var 变量 =  new RegExp("正则表达式", "匹配模式");

记得在使用typeof检查正则对象会返回一个Object对象。第二个参数有两个特殊的值:
i 忽略大小写 例如 : var reg= new RegExp("a","i"); = var reg2=/a/i;
g 全局匹配模式

例如:

    var reg = new RegExp("a");//这个正则表达式可以用来检查一下字符串中是否含有a,正则表达式中区分大小写字母console.log(typeof reg);var str="azdaszxc";var result =reg.test(str);console.log(result);//结果输出是true,即符合表达式

在这里插入图片描述

第二种创建方式

使用正则表达式字面量,将正则表达式包含在斜杠/ 中。

let regex = /pattern/;

例如:

/**var 变量 = new RegExp("正则表达式","匹配模式");*var 变量=/正则表达式/匹配模式*/var reg= new RegExp("a","i");console.log(reg.test("abc"));var reg2=/a/i;console.log(reg2.test("abc"));//这两种方法都是一样的效果//创建一个正则表达式,检查一个字符串中是否有a或者b//使用|表示或者的意思 例如/a|b/,里面可以加入多个|,不局限于数量var reg3=/a | b/i;console.log(reg.test("wea"));//创建一个正则表达式检查一个字符串中是否有字母//笨办法1  var reg=/a|b|c|d|e|f|g|h|i|j|k等等/i//笨办法2 var reg=/[abcdefg等等]/i 这样也表示a或者b或者c等等//[a-z]任意小写字母//[A-Z]任意大写字母//[A-z]任意字母//[]表示或者//[^ ]表示除了,即判断字符串中是否有除开指定参数的其他参数,有的话就输出truevar reg4=/[0-9]/i;console.log(reg4.test("AISUDOHAasda415641785722132531531534sdasdaOUIFNUIASDHDFUASOI"));//检查一个字符串中是否含有abc或者adc或者aec//因为开头都是a结尾都是c,所以可以用如下办法var reg5=/a[a-z]c/i;console.log(reg5.test("aac"));

在这里插入图片描述

测试匹配:

  • 使用 test() 方法来测试字符串是否与正则表达式匹配,返回布尔值。
  • 例如:let isMatch = regex.test(str);

查找匹配:

  • 使用 match() 方法来查找字符串中与正则表达式匹配的部分,返回匹配结果的数组。
  • 例如:let matches = str.match(regex);
//match()//可以根据正则表达式,从一个字符串中奖符合条件的内容提取出来//默认情况下match()方法只会找到第一个符合要求的内容,找到后就会停止检索//我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容//可以为一个正则表达式设置多个匹配模式,而且输入指定模式的字符顺序无,比如ig或者gi皆可以//match()会将匹配到的内容封装到一个数组中,即使只查询到一个结果var result3=str.match(/[a-z]|[0-9]/gi);//在后面加一个g,设置为全局匹配模式//增加一个i,就表示忽略大小写,这样就可以也输出大写字母console.log(result3);//这样就可以输出字符串中所有符合条件的内容console.log(result3[2]);//输出result3这个数组中的第三个元素,也就是2console.log(result3[3]);//输出result3这个数组中的第四个元素,也就是b//如果不设置为全局匹配模式,那么就只能输出第一个符合要求的内容//如果在检索条件中增加一个[0-9]值域,那么字符串中的数字也可以检索出来

替换匹配:

  • 使用 replace() 方法来替换字符串中与正则表达式匹配的部分,返回替换后的新字符串。
  • 例如:let newStr = str.replace(regex, replacement);
//replace()//可以将字符串中的指定内容替换为新的内容//括号中有两个参数,第一个参数是被替换的内容,第二个参数是新的内容var result4 =str.replace("a","###");console.log(result4);//也可以使用值域来进行替换var result5 =str.replace(/[0-9]/g,"数字");//通过值域来对指定对象进行替换,把0-9所有的数字全部替换成汉字“数字”console.log(result5);//也可以使用空串来对指定内容进行剔除,比如删除str字符串中的所有英文字母var result6 =str.replace(/[a-z]/gi,"");console.log(result6);

切割字符串:

  • 使用 split() 方法来根据正则表达式将字符串切割成数组。
  • 例如:let arr = str.split(regex);
  var str="1a2b3c4d5e6f7UZHCUIAE";//split()可以将一个字符串拆分为一个数组var result=str.split(/[a-z]/gi);//依靠正则语法的类似格式来给split()拆分字符设置关键字符或者关键字符范围//这个方法即使不设定全局匹配模式,也会全部拆分console.log(result);

修饰符:

  • 正则表达式可以使用修饰符来改变匹配的行为,如 i(忽略大小写)、g(全局匹配)和 m(多行匹配)等。
  • 例如:let regex = /pattern/gi;

元字符和字符类:

  • 正则表达式中的元字符和字符类用于匹配特定的字符或字符集合,如 .(匹配任意字符)、\d(匹配数字字符)和 [abc](匹配字符 a、b 或 c)等。
  • 例如:let regex = /\d+/;

量词:

  • 正则表达式中的量词用于指定匹配的次数,如 *(零次或多次)、+(一次或多次)和 ?(零次或一次)等。
  • 例如:let regex = /\d{2,4}/;
    //创建一个正则表达式检查一个字符串里面是否含有aaavar reg=/aaa/;console.log(reg.test("aaabbc"));//重复写有些繁琐,就可以通过量词设置一个内容出现的次数//{n}表示重复n次//{m,n}表示重复m-n次//{m,}表示重复m次以上var reg2=/a{3}/i;//除了设置量词之外,还可以额外设置匹配模式,比如全局匹配或者是否忽略大小写console.log(reg2.test("aaAbbc"));//量词只他前边的一个内容起作用//例如 bc{3}指的是bccc而不是bcbcbcvar reg3=/bc{3}/;console.log(reg3.test("bcbcbc"));//控制台显示错误,因为检查的字符串是bcccconsole.log(reg3.test("bccc"));//控制台显示正确,因为检查的字符串是bccc//可以用()来锁定量词的内容var reg4=/(bc){3}/;console.log(reg4.test("bcbcbc"));//控制台显示正确,因为检查的字符串是bcbcbc//量词衍生使用var reg5=/ab{1,4}c/;//这样表示b的数量是1-4个,所以abc abbc abbbc abbbbc这四个都可以console.log(reg5.test("abc"));console.log(reg5.test("abbc"));console.log(reg5.test("abbbc"));console.log(reg5.test("abbbbc"));var reg6=/ab{4,}c/;//表示中间的b的数量是四个或者四个以上console.log(reg6.test("abbc"));//控制台输出错误console.log(reg6.test("abbbc"));//控制台输出错误console.log(reg6.test("abbbbc"));//控制台输出正确console.log(reg6.test("abbbbbbbc"));//控制台输出正确//n+ 匹配任何包含至少一个n的字符串//n+ 相当于n{1,}即数量大于等于一的n的字符串var reg7=/ab+c/;console.log(reg5.test("ac"));//控制台输出错误,因为没有bconsole.log(reg7.test("abc"));//控制台输出正确,因为有bconsole.log(reg7.test("abbc"));//控制台输出正确,因为有bbconsole.log(reg7.test("abbbc"));//控制台输出正确,因为有bbb//至少包含一个ab就能够输出正确,多个ab不影响输出结果//n* 相当于n{0,}即数量大于等于领的n的字符串var reg8=/ab*c/;console.log(reg8.test("ac"));//控制台输出正确,因为没有b也可以console.log(reg8.test("abc"));//控制台输出正确,因为有bconsole.log(reg8.test("abbc"));//控制台输出正确,因为有bbconsole.log(reg8.test("abbbc"));//控制台输出正确,因为有bbb//n? 0个或者1个,相当于{0,1}即数量是0-1个var reg9=/ab?c/;console.log(reg9.test("ac"));//控制台输出正确,因为没有b也可以console.log(reg9.test("abc"));//控制台输出正确,因为有一个bconsole.log(reg9.test("abbc"));//控制台输出错误,因为有连个bconsole.log(reg9.test("abbbc"));//控制台输出错误,因为三个b//检查一个字符串是否以a开头// ^表示开头//比如 /^a/var reg10=/^a/;var reg11=/c$/;console.log(reg10.test("ab"));//控制台输出正确,因为开头是aconsole.log(reg10.test("bc"));//控制台输出错误,因为开头不是aconsole.log(reg10.test("abc"));//控制台输出正确,因为开头是aconsole.log(reg10.test("bcd"));//控制台输出错误,因为开头不是aconsole.log(reg11.test("ab"));//控制台输出错误,因为结尾是bconsole.log(reg11.test("bc"));//控制台输出正确,因为结尾是cconsole.log(reg11.test("abc"));//控制台输出正确,因为结尾是cconsole.log(reg11.test("bcd"));//控制台输出错误,因为结尾是d//如果同时使用开头和结尾var reg12=/^a$/;console.log(reg12.test("aa"));//控制台输出错误,因为开头的a和结尾的a不是同一个console.log(reg12.test("a"));//控制要输出正确,因为检索的a即是开头也是结尾//如果使用或语句var reg13=/^a|a$/;console.log(reg13.test("a"));//控制台输出正确,因为开头或者结尾是aconsole.log(reg13.test("aa"));//控制台输出正确,因为开头或者结尾是a//创建一个正则表达式,用来检查一个字符串是否是手机号//手机号的规则//1.以1开头//2.第二位数字是3-9//3.三位以后包括三位的数字可以使0-9任意一个var mobilephoneStr="15697955165";var mobilephoneStr2="18365445708";var reg14=/^1[3-9][0-9]{9}$/;console.log(reg14.test(mobilephoneStr));//控制台输出为true,符合条件console.log(reg14.test(mobilephoneStr2));//控制台输出为true,符合条件console.log(reg14.test("11011011011"));//控制台输出为fals,不符合手机号的规则

在这里插入图片描述

    //检查一个字符串中是否含有.//.表示任意字符var reg=/./;console.log(reg.test("ahduads"));//.表示任意字符,所以不管内容是什么,控制台输出都是true//在正则表达式中用\作为转义字符//\.来表示.//同理 \\表示\var reg2=/\./;console.log(reg2.test("agbuidashduia"));//字符串中没有.,所以控制台输出falseconsole.log(reg2.test("asdasd.asdasd"));//字符串中有.,所以控制台输出truevar reg3=/\\/;console.log(reg3.test("b\\"));//要在字符串中输入\,必须输入\\//使用构造函数时,由于他的参数是一个字符串,而\是字符串中转义字符//如果要使用\则需要使用\\来代替var reg4 =new RegExp("\\.");//这样的字符串表示检索是否有.console.log(reg4.test("asd"));//字符串中没有.,所以输出falseconsole.log(reg4.test("ad.asd"));//字符串中有.,所以输出true// \w 任意字母、数字以及下划线_ [A-z0-9_]var reg4=/\w/;console.log(reg4.test("abc"));console.log(reg4.test("ABC"));console.log(reg4.test("123"));console.log(reg4.test("___"));//以上输出都是ture,可以使大写字母也可以是小写字母,还可以是数字和下划线_// \W 跟\w相反,除了字母、数字以及下划线_ [^A-z0-9_] 这里的^表示除了var reg5=/\W/;console.log(reg5.test("!@#$%^^*&**%"));console.log(reg5.test("abc"));console.log(reg5.test("ABC"));console.log(reg5.test("123"));console.log(reg5.test("___"));//第一个输出true,后面几个全部输出false。除了字母、数字以及下划线_,其余的都输出true// \d 表示任意数字 [0-9]// \D 表示除了数字 [^0-9]// \s 表示空格 // \S 表示除了空格// \b 表示边界 \B 表示除了单词边界var reg6=/\bchild\b/;console.log(reg6.test("hell child"));//控制台输出trueconsole.log(reg6.test("hello children"));//控制台输出false// \bchild\b 表示搜索child这个单词,并且要存在边界

在这里插入图片描述

案例匹配电子邮件

    //电子邮件//格式根据网站要求定制//例如 任意字母数字下划线(三个起步).任意字母数字下划线@任意字母数字.任意字母(2-5).任意字母(2-5)// \w{3,} (\.\w+)* @ [A-z0-9]+  (\.[A-z]{2,5}){1,2}// +表示一次或者一次以上,*表示可有可无var emailReg=/\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}/;console.log(emailReg.test("2299999995@qq.com"));console.log(emailReg.test("xahsad.whahhs@123.com"));

在这里插入图片描述

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

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

相关文章

公链系统开发全指南: 从规划到实施

在区块链技术的迅速发展和应用推广下,公链系统的开发成为了当前数字资产领域的热门话题。从规划到实施,公链系统的开发过程需要经历多个步骤,下文将详细介绍每个步骤。 第一步: 规划和设计 市场调研: 分析市场需求和竞争情况,确定…

Power BI 如何创建页面导航器?(添加目录按钮/切换页面按钮)

Power BI 中页导航是什么? 在Power BI中,页导航(Page Navigation)是指在报告中创建多个页面(页),然后允许用户在这些页面之间进行导航的功能。 如下图所示,页导航的选项和报告中的…

多模态模型

转换器成功作为构建语言模型的一种方法,促使 AI 研究人员考虑同样的方法是否对图像数据也有效。 研究结果是开发多模态模型,其中模型使用大量带有描述文字的图像进行训练,没有固定的标签。 图像编码器基于像素值从图像中提取特征,…

调度问题变形的贪心算法分析与实现

调度问题变形的贪心算法分析与实现 一、问题背景与算法描述二、算法正确性证明三、算法实现与分析四、结论 一、问题背景与算法描述 带截止时间和惩罚的单位时间任务调度问题是一个典型的贪心算法应用场景。该问题的目标是最小化超过截止时间导致的惩罚总和。给定一组单位时间…

基于51单片机的数码管显示的proteus仿真

文章目录 一、数码管二、单个数码管显示0~F仿真图仿真程序 三、数码管静态显示74HC138译码器74HC245缓冲器仿真图仿真程序 四、数码管动态显示仿真图仿真程序 三、总结 一、数码管 数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。它的基…

毕业撒花 流感服务小程序的设计与实现

目录 1.1 总体页面设计 1.1.1 用户首页 1.1.2 新闻页面 1.1.3 我的页面 1.1.5 管理员登陆页面 1.1.6 管理员首页 1.2 用户模块 1.2.1 体检预约功能 1.2.2 体检报告功能 1.2.4 流感数据可视化功能 1.2.5 知识科普功能 1.2.6 疾病判断功能 1.2.7 出示个人就诊码功能 …

2(第一章,数据管理)

目录 概述 基本概念 数据与信息 数据管理原则 1. 数据是有独特属性的资产 2. 数据的价值可以用经济术语来表示 数据价值评估模型 3. 管理数据意味着对数据的质量管理 4. 管理数据需要元数据 5. 数据管理需要规划 6. 数据管理须驱动信息技术决策 7. 数据管理是跨职能…

40-50W 1.5KVDC 隔离 宽电压输入 DC/DC 电源模块——TP40(50)DC 系列

TP40(50)DC系列电源模块额定输出功率为40-50W、应用于2:1、4:1电压输入范围 9V-18V、18V-36V、36V-75V、9V-36V、18V-75V的输入电压环境,输出电压精度可达1%,可广泛应用于通信、铁路、自动化以及仪器仪表等行业。

AI-数学-高中-40法向量求法

原作者视频:【空间向量】【考点精华】3法向量求法稳固(基础)_哔哩哔哩_bilibili 注意:法向量对长度没有限制,求法向量时,可以假设法向量z为任意一个取非0的值。 示例1: 示例2:

53 语言模型【动手学深度学习v2】

https://www.bilibili.com/read/cv17622666/?jump_opus1https://www.bilibili.com/read/cv17622666/?jump_opus1

[RTOS 学习记录] 工程管理工具make及makefile

[RTOS 学习记录] 工程管理工具make及makefile 这篇文章是我阅读《嵌入式实时操作系统μCOS-II原理及应用》后的读书笔记,记录目的是为了个人后续回顾复习使用。 前置内容: 开发工具 Borland C/C 3.1 精简版 文章目录 1 make 工具2 makefile 的内容结构3…

HBase的简单学习三

一 过滤器 1.1相关概念 1.过滤器可以根据列族、列、版本等更多的条件来对数据进行过滤, 基于 HBase 本身提供的三维有序(行键,列,版本有序),这些过滤器可以高效地完成查询过滤的任务,带有过滤…

线性模型算法

简介 本文章介绍机器学习中的线性模型有关内容,我将尽可能做到详细得介绍线性模型的所有相关内容 前置 什么是回归 回归的就是整合+预测 回归处理的问题可以预测: 预测房价 销售额的预测 设定贷款额度 可以根据事物的相关特征预测出对…

eCharts 折线图 一段是实线,一段是虚线的实现效果

在lineStyle里写了不生效的话,可以尝试数据拼接 option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [150, 230, 224,218 ,,,],type: line},{data: [,,, 218, 135, 147, 260],type: line,lineStyl…

在excel中,如何在一个表中删除和另一个表中相同的数据?

现在有A表,是活动全部人员的姓名和学号,B表是该活动中获得优秀人员的姓名和学号, 怎么提取没有获得优秀人员的名单? 这里提供两个使用excel基础功能的操作方法。 1.条件格式自动筛选 1.1按住Ctrl键,选中全表中的姓…

Interpreter 解释器

意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 结构 AbstractExpression声明一个程序的解释操作,这个接口为抽象语法树中所有结点所共享。TerminalExpression实现与文法…

Ts类型体操详讲 之 extends infer (下)

目录 1、函数 (1)提取参数类型 (2)提取返回值类型 2、构造器 (1)提取构造器返回值 (2)提取构造器参数类型 3、索引类型 本章我们继续上节的内容继续,展示我们对ex…

聚观早报 | TCL召开电视新品发布会;OceanBase 4.3发布

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 4月22日消息 TCL召开电视新品发布会 OceanBase 4.3发布 科大讯飞推出耳背式助听器 F1联想中国大奖赛开赛 蔚来展…

引领4G拾音新时代:DuDuTalk双定向拾音设备上市,助力现场管理步入智能化

近日,继DuDuTalk的4G智能拾音工牌(挂牌和胸牌)之后,赛思云科技在线下沟通场景智能语音采集方案领域的又一突破性产品4G双定向桌面拾音终端全新上市。 该产品是面向营业网点、市政大厅、医疗诊室、售票窗口、贵宾室等环境的柜台服…

AD 21、22 软件安装教程

AD2022安装包链接 链接:https://pan.baidu.com/s/1oMNbXibQ1Zjl0RTLdPDVGw 提取码:xfs4 软件下载 1.以管理员身份运行 2. 3. 4. 5.路径最好改为C盘以外的,如D盘,要新建一个空文件夹 6. 7.下载好以后 8.在Crack文件夹下找…