JavaScript -- 正则表达式及示例代码介绍

news2024/12/23 10:55:18

文章目录

  • 正则表达式
    • 1 正则表达式的介绍
    • 2 创建正则表达式
    • 3 通过整个表达式检查字符串是否符合规则
    • 4 正则表达式的基本语法
    • 5 提取符合规则的字符串
    • 6 例子

正则表达式

1 正则表达式的介绍

  • 正则表达式用来定义一个规则
  • 通过这个规则计算机可以检查一个字符串是否符合规则或者将字符串中符合规则的内容提取出来
  • 正则表达式也是JS中的一个对象,所以要使用正则表达式,需要先创建正则表达式的对象
  • typeof 返回的是object

2 创建正则表达式

通过构造函数创建:new RegExp()

可以接收两个参数(字符串) 1.正则表达式 2.匹配模式

使用这种方式js编译器会自动将我们的这种写法去转化和字面量相同的方式

优势:可以传递变量,动态生成自责表达式

let reg = new RegExp("a", "i") // 通过构造函数来创建一个正则表达式的对象
console.log(reg)

image-20221203212609652

使用字面量来创建:

// 创建和上面相同的正则
let reg = /a/i
console.log(reg)

image-20221203212705910

使用构造函数的形式需要考虑转义字符,在字面量中可以直接写

let reg = /\w/
reg = new RegExp("\\w") // 如果只写 \w 的话会转义成 w,就表示字母w

3 通过整个表达式检查字符串是否符合规则

let str = "a"
let reg = new RegExp("a")// 表示检查一个字符串中是否含有a
// let reg = /a/ // 也可以使用这种方式定义

let result = reg.test(str) // true
result = reg.test("b") // false
result = reg.test("abc") // true
result = reg.test("bcabc") // true

4 正则表达式的基本语法

  1. 在正则表达式中大部分字符都可以直接写

  2. | 在正则表达式中表示或(整体的或)

    • /abc|bcd/表示有abc或者bcd这两个字符串
  3. [] 表示或(字符集)

    • [a-z] 任意的小写字母
    • [A-Z] 任意的大写字母
    • [a-zA-Z] 任意的字母
    • [0-9]任意数字
  4. [^] 表示除了

    • [^x] 除了x
  5. . 表示除了换行外的任意字符

  6. 在正则表达式中使用\作为转义字符

  7. 使用括号进行分组

  8. 其他的字符集

    • \w 任意的单词字符,相当于 [A-Za-z0-9_]
    • \W 除了单词字符,相当于 [^A-Za-z0-9_]
    • \d 任意数字,相当于 [0-9]
    • \D 除了数字,相当于 [^0-9]
    • \s 空格
    • \S 除了空格
    • \b 单词边界
    • \B 除了单词边界
  9. 开头和结尾

    • ^ 表示字符串的开头

    • $ 表示字符串的结尾例子

  10. 量词

    • 只对前面紧接的一个字符起作用
    • {m} 正好m个
    • {m,} 至少m个
    • {m,n} m-n个
    • +一个以上,相当于{1,}
    • *任意数量的a
    • ? 0-1次,相当于{0,1}

5 提取符合规则的字符串

使用re.exec()获取字符串中符合正则表达式的内容

案例:对于str = "abcaecafcacc"提取出str中符合axc格式的内容

默认情况下只会匹配第一个,通过设置模式g来开启全局匹配

let str = "abcaecafcacc"

let re = /a([a-z])c/g
let result = re.exec(str)
console.log(result)

不开启全局匹配g模式,每次匹配的都是第一个

image-20221203221658735

开启全局匹配g模式:从头一直匹配到尾

image-20221203221640009

在正则表达式中添加括号表示分组,因此我们现在可以拿到中间的字母(返回数组的第二个元素):

如果有多个括号的话,返回的顺序是按照左括号出现的顺序返回的

image-20221203221917966

获取所有的匹配到的结果,使用循环可以实现

let str = "abcaecafcacc"

let re = /a([a-z])c/g
let result = re.exec(str)

while(result){
    console.log(result[0], result[1])
    result = re.exec(str)
}

image-20221203222120231

6 例子

  1. 检查字符串中有没有字符串ab
re = /ab/
re.test("abc")

image-20221203215010958

  1. 检查字符串中有没有a或b

方法一:使用|

image-20221203215113172

方法二:使用[]

image-20221203215345627

  1. 检查字符串中有没有小写字母

image-20221203215515315

  1. 检查字符串中有没有除了小写字母之外的符号

image-20221203215824435

  1. 检查字符串中是否以m开头或者结尾

image-20221203220358652

  1. 检查字符串是不是abc

image-20221203220543090

  1. 检查字符串中是否有连续出现三次ab

image-20221203220943835

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

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

相关文章

python PyQt6 常用操作以及常见问题解决

因为需求需要写一个简单的Python GUI界面,期间遇到了一些问题,在这里记录下 安装PyQt6: pip install pyqt6使用QTDesigner绘制界面: 我使用Anaconda下载的pyqt6里已经自带了两种工具,下面只需要把工具导入到pycharm中&#xff0…

[附源码]计算机毕业设计旅游网的设计与实现Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

『Python学习笔记』使用Cython编程语言编译python文件

使用Cython编程语言编译python文件 文章目录一. Cython简介一. Cython编译2.1. 编译过程2.2. 环境安装2.3. disutils库2.4. 引入C源文件三. 总结参考文献一. Cython简介 Cython官网地址:https://cython.org/Cython的下载和安装:https://pypi.org/projec…

嵌入式分享合集117

一、获取STM32代码运行时间的技巧 测试代码的运行时间的两种方法: 使用单片机内部定时器,在待测程序段的开始启动定时器,在待测程序段的结尾关闭定时器。为了测量的准确性,要进行多次测量,并进行平均取值。 借助示波器…

NFV概述

NFV(网络功能虚拟化)是指利用虚拟化技术在标准化的通用IT设备(X86服务器,存储和交换设备)上实现各种网络功能。NFV的目标是取代通信网络中私有、专用和封闭的网元,实现统一通用硬件平台业务逻辑软件的开放架…

争议不断的AI绘画,靠什么成为了顶流?

今年以来,AIGC迅速崛起。所谓AIGC,即AI-Generated Content,指的是利用人工智能来生成内容,被认为是继专业产出内容(PGC)、用户产出内容(UGC)后的新型内容创作方式。不久前掀起热议的…

客户需求太多,如何有效沟通完成项目?

1、向客户明确:工作量、时间与质量的关系 需要想客户明确,某时间内在保障开发质量的前提下,实际的工作量。如果加大工作量,在赶工情况下,开发质量无法保障。如要保障开发质量,开发时间会延长,那…

【电力系统】基于Matlab实现风电光伏概率潮流计算

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

threejs官方demo学习(1):animation

前言 之前的threejs入门视频教学已经学习完了,下面会陆续学习官方demo。官方网址太卡了建议在本地进行搭建,具体见:threejs视频教程学习(1):本地搭建threeJS官网、渲染第一个场景 官方的例子都是html格式…

Qt源码编译aarch等架构可参考

前言: 我的建议是: 编译环境一定要有网络,依赖的包才可以方便安装!!! 一、准备工作 有网但ping不通、或者没有源的 可能需要先配置: 源路径: /etc/apt/source.list 系统默认DNS配置: /etc/r…

iTOP3588开发板编译Android内核方法一

iTOP3588开发板编译Android内核方法一: 在 Android 源码目录下执行如下命令编译 Android 内核: ./build.sh -CKA 编译完成后如下图所示: 编译后会在 rockdev/Image-rk3588_s 目录下生成 boot.img,boot.img 为内核镜像。boot.i…

《操作系统实战 45 讲》系统环境搭建 (Ubuntu + Vmware)

系统环境搭建 1. Ubuntu下载2. Vmware安装 Ubuntu系统2.1 配置电脑2.2 安装系统(Ubuntu16.04)3、配置网络和修改yum源3.1. 编辑 VMware 的网络配置3.2 windows 的网络配置3 .3 虚拟机网络 IP 修改地址配置3.4 修改yum源3.5 安装vm-tools1. Ubuntu下载 清…

【泊车】基于强化学习实现智能泊车附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

仿照string类,实现自定义My_strng类,以及相关操作

代码 #include <iostream> #include <cstring>using namespace std;class My_string { private:char* cstr;int len; public:My_string():cstr(NULL),len(0) //无参构造{}My_string(const char* str) //有参构造{this->len strlen(s…

【C++笔试强训】第二天

选择题 1.使用printf函数打印一个double类型的数据&#xff0c;要求&#xff1a;输出为10进制&#xff0c;输出左对齐30个字符&#xff0c;4位精度。以下哪个选项是正确的&#xff1f; A %-30.4e B %4.30e C %-30.4f D %-4.30f 对于 %m.nf &#xff0c;double对应%f.要求打印…

爬虫之Scrapy架构

目录 Scrapy架构介绍 Scrapy下载 Scrapy基本使用 Scrapy目录结构 Scrapy解析数据 settings相关配置 基础配置 增加爬虫的爬取效率 去重规则&#xff08;布隆过滤器&#xff09; 持久化方案(数据保存) request和response传递参数 网页解析下一页继续爬取 爬虫和下载…

Java安全之深入了解SQL注入

深入了解Java中的SQL注入 本文以代码实例复现了Java中JDBC及Mybatis框架采用预编译和非预编译时可能存在SQL注入的几种情况&#xff0c;并给予修复建议。 JDBC 首先看第一段代码&#xff0c;使用了远古时期的JDBC并且并没有使用预编译。这种简单的字符串拼接就存在SQL注入 …

信息化带来的制造业生产管理系统究竟有哪些作用呢?

制造业是一个现代国家的经济基础&#xff0c;决定着着国家的兴衰存亡。长期以来人们和国家都对制造业给予高度重视&#xff0c;无论是资金投入还是管理的手段和方法的提高&#xff0c;制造业在生产行业中的优势越来越明显。尤其是随着科学技术的快速发展&#xff0c;制造业的现…

uniapp easycom

easycom 是 uniapp 的一种组件自动引入的规则&#xff0c;使用这种规则可以使满足规则的组件无需注册直接使用。 接下来我们来看一眼效果 这里可以看到我并没有进行组件注册而是直接使用了组件&#xff0c;这样的效果就是通过 easycom 的自定义规则来实现的。 来看一眼我的自…

庐山真面目之——LWIP初探

目录 LWIP简介 网络层协议分层模型介绍 LWIP源代码结构 lwip源码文件说明 lwip的contrib包文件说明 以太网接入MCU方案 LWIP结构框图 LWIP简介 lwIP 是 Light Weight&#xff08;轻型&#xff09;IP 协议&#xff0c;有无操作系统的支持都可以运行。lwIP 实现的重点 是在保…