当前位置: 首页 > news >正文

JS-第二十三天-正则

正则表达式总结

1. 基本概念

什么是正则表达式

  • 强大的文本模式匹配工具

  • 使用特定语法规则描述和匹配字符串模式

  • 包含普通字符和特殊字符(元字符)

  • 用单个字符串描述一系列符合特定规则的字符串

应用价值

  • 显著提高开发效率

  • 在字符串处理方面带来巨大成就感

  • 广泛应用于表单验证、数据提取、文本搜索等场景

语言支持

  • JavaScript、C#、Java、PHP、Python 等主流编程语言都支持

2. 创建方式

字面量方式

  • 使用斜线 / 包围模式

  • 适用于静态正则表达式

  • 性能更优(编译时确定模式)

构造函数方式

  • 使用 new RegExp() 构造函数

  • 支持动态生成正则表达式

  • 运行时确定模式

选择建议

  • 静态模式:使用字面量方式

  • 动态模式:使用构造函数方式

  • 性能敏感场景:优先选择字面量方式

3. 核心语法要素

字符集

  • [...] - 字符集合,匹配方括号中的任意一个字符

  • [^...] - 反向字符集合,匹配不在方括号中的字符

  • 常用字符集:中文字符、数字集、字母集、单词字符集

边界符

  • ^ - 匹配字符串开始位置

  • $ - 匹配字符串结束位置

  • ^pattern$ - 精确匹配整个字符串

量词

  • {n} - 恰好匹配 n 次

  • {n,} - 至少匹配 n 次

  • {n,m} - 匹配 n 到 m 次

  • + - 一次或多次({1,})

  • ? - 零次或一次({0,1})

  • * - 零次或多次({0,})

元字符

  • \d - 匹配数字字符 [0-9]

  • \D - 匹配非数字字符 0-9

  • \w - 匹配单词字符 [a-zA-Z0-9_]

  • \W - 匹配非单词字符 a-zA-Z0-9_

  • \s - 匹配空白字符

  • \S - 匹配非空白字符

  • . - 匹配除换行符外的任意字符

  • | - 或运算符

  • () - 组

注:空字符介绍:

  1. 空格 (Space):按下空格键

  2. 换行符 (Newline):在Unix/Linux系统中,换行符是 \n 。在Windows系统中,换行符是

r\n (回车符 \r ,后面跟着换行符 \n )。

  1. 回车符 (Carriage Return):使用 \r 来表示。

  2. 换页符 (Page Break):使用 \f 来表示。

  3. 制表符 (Tab):使用 \t 来表示。

  4. 垂直制表符 (Vertical Tab):使用 \v 来表示。

  5. .....

4. 修饰符

常用修饰符

  • g (global) - 全局搜索

  • i (ignore case) - 忽略大小写

修饰符组合

  • 可以组合使用多个修饰符 ig

  • 顺序不影响功能

5. 匹配模式

贪婪匹配(默认)

  • 尽可能多地匹配字符

  • 直到无法满足模式为止

惰性匹配

  • 尽可能少地匹配字符

  • 在量词后添加 ? 实现

  • 常用惰性量词:+?*???

6. 字符串方法

常用方法

  • split() - 分割字符串

  • replace() - 替换字符串

  • replaceAll() - 替换所有匹配项

  • match() - 返回匹配结果数组

  • search() - 返回第一个匹配的索引

决各种字符串处理问题。


PS:文档来自于我的老师

http://www.lryc.cn/news/617237.html

相关文章:

  • 大数据量下分页查询性能优化实践(SpringBoot+MyBatis-Plus)
  • 集成电路学习:什么是URDF Model统一机器人描述格式模型
  • ZeroNews:如何构建安全(无需 V*N!)的工业物联网连接
  • 大模型落地:AI 技术重构工作与行业的底层逻辑
  • Salesforce案例:零售企业会员积分体系
  • 【软考架构】需求工程中,系统分析与设计的结构化方法
  • [Shell编程] Shell 编程之免交互
  • C语言模拟 MCU 上电后程序的执行顺序 + 回调函数机制 + 程序计数器(PC)和堆栈的作用
  • LangVM —— 一站式多语言版本管理工具,让 Java、Python、Go、Node.js 切换更丝滑
  • CVE-2019-0708复刻
  • buildroot编译qt 5.9.8 arm64版本踩坑
  • Windows文件时间修改指南:从手动到自动化
  • AI驱动的智能编码革命:从Copilot到全流程开发自动化
  • FFmepg源码系列-avformat_open_input()
  • Python调用C/C++函数库的多种方法与实践指南
  • 聊天室全栈开发-保姆级教程(Node.js+Websocket+Redis+HTML+CSS)
  • MathType关联Wps实现公式编辑【Tex语法适配】
  • 2438. 二的幂数组中查询范围内的乘积
  • 【liunx】web高可用---nginx
  • 编译Android版本可用的高版本iproute2
  • 机器学习 - Kaggle项目实践(1)Titanic
  • C++多态详解
  • SDI设计中,为何SD-SDI模式下,接收器用DRU实现,在3G-SDI模式下,使用transceiver实现
  • 多轮会话记忆的核心挑战
  • Spring Boot 中 @Transactional 解析
  • 自动化备份全网服务器数据平台项目
  • P2865 [USACO06NOV] Roadblocks G
  • ListNode* dummy = new ListNode();什么意思
  • 【功能测试】软件集成测试思路策略与经验总结
  • 使用纯NumPy实现回归任务:深入理解机器学习本质