17 JavaScript 学习:正则表达式

news2024/10/7 8:20:48

JavaScript 正则表达式

JavaScript中正则表达式是一种强大的工具,用于在字符串中进行模式匹配和搜索。下面是一些JavaScript中使用正则表达式的基本知识:

  1. 创建正则表达式:可以使用字面量形式或者RegExp构造函数来创建正则表达式。

    • 字面量形式:var regex = /pattern/;
    • 构造函数形式:var regex = new RegExp('pattern');
  2. 匹配模式:在正则表达式中,可以使用各种字符和特殊符号来构建匹配模式,例如:

    • \d:匹配数字字符。
    • \w:匹配字母、数字或下划线字符。
    • []:匹配指定范围内的字符。
    • ^:匹配输入的开始。
    • $:匹配输入的结束。
    • |:逻辑或操作符,匹配多个模式中的任意一个。
  3. 常用方法:JavaScript中常用的正则表达式方法包括:

    • test():测试字符串是否匹配正则表达式,返回true或false。
    • exec():在字符串中执行正则表达式匹配,返回匹配结果的数组或null。
    • match():在字符串中检索匹配的字符串,返回一个包含匹配结果的数组或null。
    • replace():在字符串中执行搜索并替换,返回替换后的新字符串。
    • search():在字符串中搜索匹配项,返回匹配到的第一个字符的索引,若无匹配则返回-1。
  4. 修饰符:在正则表达式中,可以使用修饰符来改变匹配的行为,例如:

    • i:忽略大小写。
    • g:全局匹配,查找所有匹配而非在找到第一个匹配后停止。
    • m:多行匹配模式。
  5. 示例:以下是一些使用正则表达式的示例:

    var str = "Hello, world!";
    var pattern = /world/;
    
    // 测试字符串是否匹配
    console.log(pattern.test(str)); // 输出 true
    
    // 执行正则表达式匹配
    console.log(pattern.exec(str)); // 输出 ["world", index: 7, input: "Hello, world!", groups: undefined]
    
    // 检索匹配的字符串
    console.log(str.match(pattern)); // 输出 ["world", index: 7, input: "Hello, world!", groups: undefined]
    
    // 替换匹配项
    console.log(str.replace(pattern, "universe")); // 输出 "Hello, universe!"
    
    // 搜索匹配项
    console.log(str.search(pattern)); // 输出 7
    

这些是JavaScript中使用正则表达式的基础知识,你可以根据具体需求深入学习和应用正则表达式。

正则表达式语法

正则表达式(Regular Expression)是一种用来描述字符串匹配模式的表达式。它在文本处理、搜索和替换等操作中广泛应用。下面是一些常见的正则表达式语法:

  1. 普通字符:大多数字符(字母、数字、符号)在正则表达式中会按照字面意义匹配。

  2. 特殊字符

    • .: 匹配除换行符以外的任意一个字符。
    • ^: 匹配输入字符串的开始位置。
    • $: 匹配输入字符串的结尾位置。
    • \: 将其后面的特殊字符转义为普通字符,例如\.匹配点本身。
  3. 字符类别

    • [...]: 匹配方括号内列出的任意一个字符,如[abc]匹配字符a、b、c中的任意一个。
    • [^...]: 匹配除方括号内列出的任意一个字符,如[^abc]匹配非a、b、c的任意字符。
  4. 量词

    • *: 匹配前面元素出现0次或多次。
    • +: 匹配前面元素出现1次或多次。
    • ?: 匹配前面元素出现0次或1次。
    • {n}: 匹配前面元素刚好出现n次。
    • {n,}: 匹配前面元素至少出现n次。
    • {n,m}: 匹配前面元素出现n到m次。
  5. 转义字符

    • \d: 匹配数字字符,相当于[0-9]
    • \w: 匹配字母、数字、下划线,相当于[a-zA-Z0-9_]
    • \s: 匹配空白字符,包括空格、制表符、换行符等。
  6. 分组

    • (...): 将括号内的内容作为一个分组,可以对分组使用量词。
  7. 选择

    • |: 表示“或”,用于在多个表达式中选择一个匹配。

这只是正则表达式语法的基础部分,正则表达式功能强大,可以实现复杂的匹配需求。

使用字符串方法

在 JavaScript 中,search 方法和 replace 方法是用于处理字符串的两个常用方法。

  1. search 方法
    • search 方法用于在字符串中搜索指定的子字符串,并返回子字符串的位置(索引)。如果找到了匹配的子字符串,则返回其第一个字符的位置;如果没有找到匹配的子字符串,则返回 -1。
    • search 方法支持正则表达式作为搜索条件。
let str = "Hello world!";
let position = str.search("world"); // 返回 6,因为子字符串 "world" 在原字符串中的位置是从第 6 个字符开始的
  1. replace 方法
    • replace 方法用于在字符串中替换指定的子字符串(或者匹配的正则表达式),并返回替换后的新字符串。
    • 可以使用正则表达式作为替换的匹配条件,并结合正则表达式中的捕获组来进行更复杂的替换操作。
let str = "Visit Microsoft!";
let newStr = str.replace("Microsoft", "Google"); // 返回 "Visit Google!",将 "Microsoft" 替换为 "Google"

结合正则表达式时,replace 方法可以通过正则表达式中的捕获组来实现更灵活的替换:

let str = "apple, banana, orange";
let newStr = str.replace(/(\w+), (\w+), (\w+)/, "$3, $2, $1"); // 返回 "orange, banana, apple",将顺序反转

正则表达式 /(\w+), (\w+), (\w+)/ 匹配了三个以逗号和空格分隔的单词,并将它们分别存储在三个捕获组中。$1$2$3 分别代表第一个、第二个和第三个捕获组,因此将它们按相反的顺序重新排列即可实现顺序反转的效果。

这就是结合正则表达式的 searchreplace 方法在 JavaScript 中的用法。

正则表达式修饰符

在这里插入图片描述

正则表达式中的修饰符是指在正则表达式之后添加的字符,用于指定匹配规则的一些特性。常见的正则表达式修饰符包括:

  1. i(不区分大小写):当使用 i 修饰符时,表示匹配时不区分大小写。例如,/hello/i 匹配 “hello”、“Hello”、“HELLO” 等。

  2. g(全局匹配):当使用 g 修饰符时,表示匹配全部字符串而不仅仅是第一个匹配项。例如,/hello/g 匹配 “hello hello hello” 中的所有 “hello”。

  3. m(多行匹配):当使用 m 修饰符时,表示将查找换行符(\n)或者回车符(\r)作为字符串的开始或结束。这主要用于多行文本的匹配。

这些修饰符可以单独使用,也可以组合在一起使用。在 JavaScript 的正则表达式中,修饰符通常直接跟在正则表达式的后面,例如 /pattern/ig

举个例子,如果你想要在一个字符串中查找所有的 “apple”,不区分大小写,可以使用 /apple/ig 正则表达式。其中,i 修饰符表示不区分大小写,g 修饰符表示全局匹配。

这就是正则表达式修饰符在 JavaScript 中的作用和用法。

正则表达式模式

在这里插入图片描述
在这里插入图片描述

正则表达式模式指的是正则表达式中用于匹配文本的部分,也就是描述要匹配的规则和模式的部分。正则表达式模式由普通字符(例如字母、数字、符号等)和元字符(具有特殊含义的字符)组成,通过这些字符的组合,可以定义出各种复杂的匹配规则。

下面是一些常见的正则表达式模式中的元字符:

  1. .(点):匹配任意单个字符,除了换行符。
  2. \d:匹配一个数字字符,相当于 [0-9]
  3. \w:匹配一个单词字符,包括字母、数字、下划线,相当于 [A-Za-z0-9_]
  4. \b:匹配单词的边界,不匹配任何字符。
  5. ^:匹配输入的开始位置。
  6. $:匹配输入的结束位置。
  7. [ ]:匹配方括号中的任意一个字符。
  8. |:表示逻辑“或”,匹配两者之一。
  9. ():表示捕获分组,可以将其中的内容作为一个整体进行匹配和操作。

使用这些元字符的组合,可以构建出各种复杂的匹配规则,从简单的匹配数字、字母,到复杂的匹配邮箱地址、URL等。正则表达式模式的应用非常广泛,在文本处理、数据提取等方面发挥着重要作用。

使用 RegExp 对象

使用 RegExp 对象是在 JavaScript 中处理正则表达式的一种方式。通过 RegExp 对象,可以创建一个正则表达式的实例,然后用该实例进行匹配、替换等操作。

以下是使用 RegExp 对象的一些常见方法和示例:

  1. 创建 RegExp 对象:可以使用字面量表示法或者构造函数来创建 RegExp 对象。

    • 字面量表示法:var pattern = /abc/;
    • 构造函数:var pattern = new RegExp("abc");
  2. 测试字符串是否匹配:可以使用 test() 方法来测试一个字符串是否匹配指定的正则表达式。

    var pattern = /hello/;
    var str = "hello world";
    var isMatch = pattern.test(str);
    console.log(isMatch); // 输出 true
    
  3. 匹配字符串:使用 exec() 方法来执行一个正则表达式匹配,返回匹配结果数组或者 null。

    var pattern = /hello/;
    var str = "hello world";
    var result = pattern.exec(str);
    console.log(result[0]); // 输出匹配到的字符串 "hello"
    
  4. 替换字符串:使用 replace() 方法可以将匹配到的部分替换成指定内容。

    var pattern = /world/;
    var str = "hello world";
    var newStr = str.replace(pattern, "JavaScript");
    console.log(newStr); // 输出 "hello JavaScript"
    
  5. 获取匹配位置:使用 search() 方法返回第一个匹配的索引位置。

    var pattern = /world/;
    var str = "hello world";
    var index = str.search(pattern);
    console.log(index); // 输出 6
    

通过 RegExp 对象,我们可以方便地操作正则表达式,对文本进行模式匹配和处理。如果您有更多关于 RegExp 对象的问题或者需要进一步的示例,请随时告诸我。我会尽力帮助您。

关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

在这里插入图片描述

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

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

相关文章

【快速上手ESP32(基于ESP-IDFVSCode)】11-MQTT

MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅模式的轻量级通讯协议,构建于TCP/IP协议之上。它最初由IBM在1999年发布,主要用于在硬件性能受限和网络状况不佳的情况下&…

M-LAG的基本概念

如图所示,用户侧设备Switch(可以是交换机或主机)通过M-LAG机制与另外两台设备(SwitchA和SwitchB)进行跨设备链路聚合,共同组成一个双活系统。这样可以实现SwitchA和SwitchB共同进行流量转发的功能&#xff…

泰迪智能科技助力中山三院放射科搭建生成式大模型应用

泰迪智能科技作为一家专业从事物联网、大数据及人工智能技术研发、咨询与培训的高科技企业,具有强大的技术研发实力和应用经验。中山大学附属第三医院放射科是集医疗、教学、科研工作于一体的广东省临床重点专科,具有深厚的医疗资源和科研基础。两者合作…

安卓和ios设置自己的短链

ios 的info.plist文件 设置 CFBundleURLSchemes 其中konnect 就是设置app的短链名称 <array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>org.konnect.app</str…

4.keepalive 与 Idle 监测

为什么需要 keepalive ? 假设你开了一个饭店,别人电话来订餐,电话通了后,订餐的说了一堆订餐要求,说着说 着,对方就不讲话了(可能忘记挂机/出去办事/线路故障等)。 这个时候你会一直握着电话等么? 不会 如果不会,那你一般怎么去做?会确认一句“你还在么?”,如果对…

常见的掼蛋误区

1、过于依赖大牌 很多新手玩家会觉得手中的大牌是必胜的保证&#xff0c;然而这种想法都是片面的。在掼蛋游戏中&#xff0c;一个合理的牌型组合往往比单一的大牌更有胜算。因此玩家要综合考虑的是手中的牌型和牌面大小。 2、盲目跟风 不少玩家在掼蛋中喜欢跟着对手的出牌思路走…

当NebulaGraph遇上智能体:图数据库智能助手

在数字化转型的浪潮中&#xff0c;图数据库技术凭借其出色的数据关联性能和灵活的查询功能&#xff0c;逐渐成为企业重要的技术选项。我们的团队之前曾经在两个项目中进行了图数据库的重构&#xff1a;一次是从OrientDB迁移到NebulaGraph&#xff0c;另一次是将ES系统迁移到Neb…

边写论文边发疯,多大仇啊?导师批注学生论文:建议把致谢部分烧掉

盼望着&#xff0c;盼望着&#xff0c;夏天来了&#xff0c;毕业的脚步近了。 于是乎&#xff0c;莘莘学子又开始幻想自己被导师带飞一路畅通顺利毕业了。 而且&#xff0c;如果可行的话&#xff0c;大家还希望能够这样&#xff1a; 然而&#xff0c;我阴暗的心中不由得泛起一…

只需几步,即可享有笔记小程序

本示例是一个简单的外卖查看店铺点菜的外卖微信小程序&#xff0c;小程序后端服务使用了MemFire Cloud&#xff0c;其中使用到的MemFire Cloud功能包括&#xff1a; 其中使用到的MemFire Cloud功能包括&#xff1a; 云数据库&#xff1a;存储外卖微信小程序所有数据表的信息。…

[Diffusion Model 笔记]DDIM 笔记 数学推导 Denoising Diffusion Implicit Models

目录 核心总结符号定义第一套&#xff0c;快速简单讲清采样方法继续分析&#xff0c;待定系数法求解图示理解关于参数sigma 本文是观看以下视频的笔记&#xff0c;强烈推荐观看最后的图示理解&#xff1a; https://www.bilibili.com/video/BV13P411J7dm/?spm_id_from333.788 论…

http基础了解

超文本传输协议&#xff08;HTTP&#xff09;是一个用于传输超媒体文档&#xff08;例如 HTML&#xff09;的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的&#xff0c;但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型&#xff0c;客户端打开一个连…

01、创建型-单例模式--只有一个实例

文章目录 前言一、基本介绍1.1 什么是单例模式1.2 为什么要用单例模式1.3 应用场景1.4 单例优缺点 二、单例模式的实现方式2.1 饿汉式单例2.1.1 静态变量方式2.1.2 静态代码块 2.2 懒汉式单例2.2.1 懒汉式单例2.2.2 懒汉式优化①-线程安全2.2.2 懒汉式优化②-双重检查锁2.2.3 懒…

力扣-1832.判断句子是否全为字母句

思路: 首先&#xff0c;我们初始化了一个长度为 26 的布尔值列表 exist&#xff0c;所有值都为 False&#xff0c;表示所有字母初始都未出现过。然后&#xff0c;我们遍历输入的字符串 sentence 中的每个字符。对于每个字符&#xff0c;我们通过计算其 ASCII 码值减去字母 a 的…

ArcGIS Pro专题地图系列教程

专题地图系列是ArcGIS Pro3.2的新功能。之前&#xff0c;如果要做8张相同区域的专题图&#xff0c;可能需要新建8个布局&#xff0c;分别进行排版&#xff0c;再导出。现在&#xff0c;一幅地图&#xff0c;一个布局&#xff0c;就可以完成这个流程。 原理是&#xff0c;根据单…

ROS python实现乌龟跟随

产生两只乌龟&#xff0c;中间的乌龟(A) 和 左下乌龟(B), B 会自动运行至A的位置&#xff0c;并且键盘控制时&#xff0c;只是控制 A 的运动&#xff0c;但是 B 可以跟随 A 运行 乌龟跟随实现的核心&#xff0c;是乌龟A和B都要发布相对世界坐标系的坐标信息&#xff0c;然后&am…

用例整体执行及pytest.ini文件

在我们写代码的过程中&#xff0c;一般都是右键或者命令行去执行一个用例 但是当我们写完后&#xff0c;需要整体执行一遍。那应该怎么搞呢&#xff1f; 我们可以在根目录下新建一个main.py或者run.py之类的文件&#xff0c;文件内容如下&#xff1a; if __name__ "__ma…

报错:图片验证码接口对接vue+springboot(下一个笔记会记录整个验证码的代码)

问题&#xff1a;空指针异常ai: 根据错误堆栈信息中提供的方法调用位置&#xff0c;看起来空指针异常是在 AuthCodeServiceImpl 类的 authUserCoded 方法的第 41 行发生的。 为了解决这个问题&#xff0c;你可以检查 AuthCodeServiceImpl 类中 authUserCoded 方法的第 41 行&am…

发那科FANUC机器人R-2000iB平衡缸维修攻略

在发那科机器人中&#xff0c;平衡缸扮演着稳定机械臂运动的关键角色。它通过内部的压力调节来平衡负载&#xff0c;保证机器人的精准定位和平稳操作。一旦出现法兰克机械手平衡缸故障或损坏&#xff0c;机器人的性能可能会大打折扣&#xff0c;因此及时且正确的FANUC机械手平衡…

2024通信会|迈向智慧配电网建设新时代,锐捷网络发布双平面配电通信解决方案

近期,以“加快推进通信数智化,助力构建新型能源体系”为主题的2024年能源网络通信创新应用大会在四川成都圆满结束,会议围绕构建新型能源体系和新型电力系统建设需求,探讨能源网络通信创新应用的最新趋势与成果、“主、配、微”通信网一体化融合、配电通信网、通信数智化转型等…

Methoxy-PEG-PCL,Methoxy-PEG-Poly(ε-caprolactone)可以作为制备纳米颗粒的重要原料

【试剂详情】 英文名称 mPEG-PCL&#xff0c;MPEG-Poly(ε-caprolactone)&#xff0c;Methoxy-PEG-PCL&#xff0c;Methoxy-PEG-Poly(ε-caprolactone) 中文名称 聚乙二醇单甲醚聚己内酯两嵌段共聚物&#xff0c; 聚乙二醇单甲醚聚己内酯 外观性状 由分子量决定&#xff0…