前端开发:JS中关于正则表达式的使用汇总

news2024/11/26 12:49:44

前言

在前端开发过程中,关于正则表达式的使用也是必备技能,尤其是在实际业务需求的时候,需要处理一些不能按照正常语句操作的逻辑,如前端开发中的字符匹配、参数处理等都需要正则表达式来匹配截取处理。虽然正则表达式在程序开发中的各个领域都会运用到,那么本篇博文只来分享正则表达式关于前端开发中的使用场景,具备正则表达式良好的使用能力可以解决意想不到的实际业务场景,所以是前端开发中必不可少的技能,建议掌握并熟练运用该内容。

正则表达式概念

正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)就是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。其中,搜索模式可用于文本搜索和文本替换。

注意:正则表达式其实是由一个字符序列形成的搜索模式。当在文本中搜索数据时,可以用搜索模式来描述想要查询的内容。正则表达式可以是一个简单的字符,也可以是一个更复杂的模式。正则表达式可用于所有文本搜索和文本替换的操作。

正则表达式语法

语法: /正则表达式主体/修饰符(可选)

注意:修饰符是可选的。

JS中正则表达式使用示例

var patt = /runoob/i

其中,/runoob/i 是一个正则表达式;runoob 是该正则表达式的主体,主要是用于检索;i 是一个修饰符,搜索不区分大小写。

JS中正则表达式的作用

在JS中使用正则表达式,是专门用来处理字符串的,可以从字符串中查找、获取、替换需要的内容。在JS中,正则表达式常用的两个字符串方法 search() 和 replace()。

1.search() 方法

search() 方法主要用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

search() 方法使用示例一:通过正则表达式检索“World”字符串,且不区分大小写

var str = "Hello World!";

var n = str.search(/World/i);

console.log(n);  //输出结果为:6

 search() 方法使用示例二:使用字符串作为参数,会转换为正则表达式,检测字符串中“World”字符串

var str = "Hello World!";

var n = str.search("World");

console.log(n);  //输出结果为:6

 

2.replace()方法

replace() 方法主要用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。

replace()方法使用示例一:使用正则表达式且不区分大小写,将字符串中的 World 替换为 JavaScript

var str = document.getElementById("test").innerHTML;

var text = str.replace(/world/i,"JavaScript");

console.log(text);  //输出结果为:Hello JavaScript

replace()方法使用示例二:接收字符串作为参数,将字符串中的 World 替换为 JavaScript

var str = document.getElementById("test").innerHTML;

var text = str.replace("World","JavaScript");

console.log(text);  //输出结果为:Hello JavaScript

使用的差异性

  1. 字符串匹配;
  2. 字符串拆分。

注意:正则表达式参数可用在以上方法中 (替代字符串参数)。正则表达式让搜索功能更加强大(如不区分大小写)。

正则表达式修饰符

正则表达式中的修饰符,可以在全局搜索中不区分大小写,具体参数如下所示:

修饰符

描述

i

执行对大小写不敏感的匹配。

g

执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m

执行多行匹配。

正则表达式的模式

正则表达式的模式分为三种:中括号(含小括号)、元字符、量词。

1、中括号(含小括号)

中括号主要是用于查找某个范围内的字符。

表达式

描述

[abc]

查找方括号之间的任何字符。

[0-9]

查找任何从 0 至 9 的数字。

(x|y)

查找任何以 | 分隔的选项。

2、元字符

元字符主要是拥有特殊含义的字符。

元字符

描述

\d

查找数字。

\s

查找空白字符。

\b

匹配单词边界。

\uxxxx

查找以十六进制数 xxxx 规定的 Unicode 字符。

3、量词

量词主要是匹配某个量级字符。

量词

描述

n+

匹配任何包含至少一个 n 的字符串。

n*

匹配任何包含零个或多个 n 的字符串。

n?

匹配任何包含零个或一个 n 的字符串。

RegExp 对象的使用

在JS中,RegExp对象主要是一个预定义了属性和方法的正则表达式对象。

test()方法的使用

首先,test() 方法是一个正则表达式方法。test() 方法主要是用于检测一个字符串是否匹配某个模式,若字符串中含有匹配的文本,则返回 true,否则返回 false。

test()方法的使用示例:用于搜索字符串中的字符 "b"

var put = /b/;

put.test("The best job!”); //由于字符串中含有 "b",所以输出结果为:true

另外一种写法:不用设置正则表达式的变量,两行代码可以合并为一行的写法

/b/.test("The best job!")

exec()的使用

exec() 方法也是一个正则表达式方法。exec() 方法主要用于检索字符串中的正则表达式的匹配,该函数会返回一个数组,其中存放匹配到的结果,如果未匹配到,则返回值为 null。

exec() 方法的使用示例:搜索字符串中的字母 "b"

/b/.exec("The best job!"); //由于字符串中含有 "b",所以输出结果为:b

实际开发中的使用场景

  1. 手机号/身份证号/邮箱,通过正则匹配处理;
  2. 中文文章/英文文章匹配某个内容,需要正则匹配来处理;
  3. 其他涉及到字符串匹配的业务场景,都可以通过正则匹配来处理。

示例一:根据token开头来做对应的运营商的协议匹配,其中移动:VMHTTPS,电信:CT_VM,联通:CU_VM 。这里以电信为例。

var operator = /CT_VM/;
operator.test("tttVMHTTPS62C9C11F32A1817B43E6888567CT_VM669A83110343E678yjkjgh76CU_VM669A83110392A18kjn"); //输出结果为:true

示例二:获取链接中的type值。

链接示例:

let url = "http://qd.dev.hc.com:8080/fd/hActivity/LCJ”;

let url = “https://m.dev.hc.com/fd/hActivity/LCJ”;

let url = “https://m.dev.hc.com/fd/hActivity/LCJ?channel=SPK&s=1&b=1”;

处理方法:

  let aa = url.match(/\/fd\/hActivity([\w\/]+)/); //根据相同部分/fd/hActivity/来进行首次截取

  let bb;

  if(aa){

    bb = aa[1]; //拿到数组的后面的元素

  }else {

    bb = "";

  }

  let cc = bb.split('/')[1]; //根据“/”进行二次截取,并取到数组的第二个元素

  if(cc) {

    activityType.value = cc;

  } else {

    activityType.value = "";

  }

console.log(activityType.value); //输出结果为:LCJ,(注:LCJ就是需要的type)

//需求二:取type后面的参数

  let params={}

  let href = url;

  href = href.substring(href.indexOf('?')+1); //取?后面的参数

  let arrobj = url.split("?");

  if(arrobj.length > 1) {

     let arrPara = arrobj[1].split("&"); //根据&符号分割

      arrPara.forEach(item=>{

  let a =item.split("="); //根据=分割

    params[a[0]]=a[1]

  })

  }

  let tempObj = { activityCode: activityType.value };

  obj = {...tempObj,...params};

 

示例三:使用正则匹配证券开头的标识

示例四:使用正则匹配数字

 

拓展一

在JS中,使用字符串连接方式有三种:“+”运算符、concat()方法、join()方法。

前端开发JS中,字符串拼接的总结 前端开发:JS中字符串拼接的总结_三掌柜666的博客-CSDN博客_js字符串拼接

拓展二

前端开发JS中,exec()match()的对比使用前端开发:JS中exec()和match()的对比使用_三掌柜666的博客-CSDN博客_前端match函数

最后

        通过上面介绍的在实际编程开发中关于前端中正则表达式的使用,虽然正则表达式的使用不属于前端核心知识点,但是在实际开发中是很重要的使用知识点,尤其是对于初中级开发者来说,更应该掌握这些情况的使用,重要性这里不再赘述。欢迎关注,一起交流,共同进步。

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

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

相关文章

01-18-spark-入门简介-部署入门

01-spark-入门简介: Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 一次性数据计算:框架在处理数据的时候,从存储设备中读取数据,进行逻辑操作,然后将结果存储到介质中。 Hadoop 的 MR 框架和 S…

直播技术分享:千万级直播系统后端架构设计的方方面面

1、引言 本文以TFBOYS“日光旅行”七周年这场直播演唱会为案例,为你分享大型直播系统后端架构设计的方方面面,包括:基本架构、稳定性保障、安全性障、监控报警、应急预案等技术范畴。 案例中的这次演唱会采用了在线实时互动及演唱会现场的多…

【能效管理】关于某项目配套渗滤液工程电能管理系统的设计和应用

摘要: 介绍老港综合填埋场二期配套渗滤液工程电能管理系统,采用智能电力仪表采集配电现场的各种电参量。系统采用现场就地组网的方式,组网后通过现场总线通讯并远传至后台,通过Acrel-3000电能管理系统实现配电回路用电的实时监控…

服开与编排,老兵新传

前段时间,有同学问:编排与服开是什么关系?现在运营商都建设编排系统,那是不是服务开通以后就退出 OSS 舞台了?为什么会出现编排?这些问题对于行业老兵来说感慨万千,而对于新兵来说就要通过追溯其…

深度学习炼丹-超参数设定和网络训练

前言网络层内在参数 使用 3x3 卷积使用 cbr 组合尝试不同的权重初始化方法 图片尺寸与数据增强batch size 设定 背景知识batch size 定义选择合适大小的 batch size学习率和 batch size 关系 学习率参数设定 背景知识什么是学习率如何设置学习率 优化器选择 优化器定义如何选择…

中国制造构建全球产业链,是关于价值链的创新

经过20天激战,世界杯最终四强全部出炉。 与此同时,绿茵场外的品牌营销大战也即将步入终章。据伦敦数据分析咨询公司GlobalData表示,中国赞助商对卡塔尔世界杯总赞助金额为13.95亿美元,蝉联赞助金额榜单的首位。一时间&#xff0c…

一、Docker简介与安装

1、Docker是什么?为什么会出现Docker 假定您在开发一个购物商城,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的…

中国新闻周刊专访:大数据时代,普通人的信息安全如何保证?

技术是一个放大器 本质应该更好地服务人们的生产生活 近年来,随着大数据运用的日益频繁,技术日益成熟,隐私数据的泄露已到了触目惊心的状态。据不完全统计,2022年以来隐私数据泄露的各类案例多达数百万起,受隐私数据泄…

P4 PyTorch Broadcasting

前言: 维度变换 目录: Broadcasting 流程 broadcasting-able code参考: 课时24 Broadcasting-1_哔哩哔哩_bilibili 一 Broadcasting 流程 分三步: i broadcasting 从最后一个维度开始,进行维度对齐 ii 最前面插入一个维度 iii 最后对…

【测绘程序设计】——地形图图幅号计算

为便于地形图测制、管理和使用,各种比例尺地形图通常需要按规定的大小进行统一分幅,并进行系统的编号。地形图的分幅可分为两大类:一是按经纬度进行分幅,称为梯形分幅法,一般用于国家基本比例尺系列的地形图;二是按平面直角坐标进行分幅,称为矩形分幅法,一般用于大比例…

地心地固坐标系WGS84经纬度与笛卡尔直角坐标系相互转换的推导、理解与代码实现(C++和matlab)

目录一、大地坐标系现状简析1.1 我国1.2 美国1.3 日本二、经纬度坐标(L,B,H)与直角坐标系坐标(X,Y,Z)相互转换2.1 正解(L,B,H)——>(X,Y,Z)2.1.1 数学推导2.1.2 C代码实现2.1.3 m…

文件描述符和缓冲区

文章目录文件操作符系统调用接口文件接口的简单实用实验一:打开文件写入信息实验二:read接口读取文件返回值和fd联想到数组下标OS怎么管理文件呢?先描述再组织。一切皆文件012的操作文件描述符的分配规则:输出重定向的原理。追加重…

Apache Kyuubi、Spark Thrift Server与Hive Server2

HiveServer2和Spark Thrift Server HiveServer2和Spark Thrift Server,两者其实都是提供一个常驻的SQL服务,用来对外提供高性能的SQL引擎能力,不过两者又有些偏差,主要是HS2是独立的Server,可组成集群,而S…

【进阶】C语言第三课:升级你的指针(2)

目录 🍇前言🍇: 一、数组参数🤠: 1.一维数组传参🍈: 2.二维数组传参🍉: 二、指针参数🤩: 1.一级指针传参🍊: 2.二级指针…

【论文写作】课程总结

文章目录1、前言2、概述3、摘要与关键字4、引言5、相关工作6、理论7、实验8、总结1、前言 《论文写作》不仅是本人认为的在本学期收获较大的一门,也是最重要的课程之一。因为作为研究生,论文是必不可少的一部分。论文是就自己研究方向中所得到的成果的一…

网络设备的运行隐患怎么排除?日常的例行维护绝对不能少,收藏本文,轻松拿捏各种场景!

设备稳定运行一方面依赖于完备的网络规划,另一方面,也需要通过日常的维护发现并消除设备的运行隐患。 日常维护怎么才能进行呢?有哪些必要的步骤呢? 记住这五步: 1、设备环境检查 设备运行环境正常是保证设备正常运…

PreScan快速入门到精通第四十二讲点云传感器

点云传感器(PCS)是一种理想化的传感器,用于构建高数据率和高更新率的点云数据。该传感器的实际应用包括检测算法的开发、激光雷达系统的设计和验证或HIL验证。同时具备竖直方向的FOV相关信息,支持4D成像雷达系统的仿真开发。 该传感器具有固定但可配置的模式,并针对性能(…

分享一些冷门但却很实用的css样式

在平常的代码工作中,有很多冷门不常用的css样式标签。有些偏门、冷门的标签一般都记不住,想起来的时候就又会去现找,很影响工作效率,现在,把这些标签都统一整理一下用的少但是超级实用的css样式。 ::-Webkit-Input-Pla…

0基础转行学软件测试,哪些技术是必须要掌握的?

作为近些年非常热门的IT岗位,软件测试-受到越来越多应届毕业生和诸多转行群体的青睐。为了满足同学们对软件测试的学习要求,测试猿课堂将在本文为大家详细讲述成为自动化软件测试工程师必须要具备的能力体系。 软件测试的学习体系总的来讲可以分为五个阶…

Redis框架(十一):大众点评项目 乐观锁解决超卖问题 悲观锁解决一人一单问题

大众点评项目 基于Session的短信登录需求:乐观锁解决超卖问题 悲观锁解决一人一单问题业务代码总结SpringCloud章节复习已经过去,新的章节Redis开始了,这个章节中将会回顾Redis实战项目 大众点评 主要依照以下几个原则 基础实战的Demo和Codi…