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

JavaScript 正则表达式全面指南

1. 正则表达式基础

1.1 创建正则表达式
  • 字面量形式

    const regex = /pattern/flags;
    • pattern:正则表达式的模式。

    • flags:标志(可选),如 g(全局匹配)、i(忽略大小写)、m(多行匹配)。

  • 构造函数形式

    const regex = new RegExp('pattern', 'flags');
    • pattern:正则表达式的模式(字符串形式)。

    • flags:标志(可选)。

1.2 正则表达式的组成部分
  • 普通字符:如字母、数字、空格等。

  • 元字符:具有特殊含义的字符,如 .*+? 等。

  • 量词:指定匹配字符的数量,如 {n}{n,}{n,m}

  • 字符类:匹配一组字符,如 [abc][^abc]

  • 分组和捕获:使用 () 进行分组和捕获。

  • 断言:如 ^(开头)、$(结尾)、\b(单词边界)。


2. 基本元字符

元字符描述
.匹配除换行符(\n)以外的任意字符。
\d匹配数字字符(等价于 [0-9])。
\D匹配非数字字符(等价于 [^0-9])。
\w匹配字母、数字或下划线(等价于 [a-zA-Z0-9_])。
\W匹配非字母、数字或下划线的字符(等价于 [^a-zA-Z0-9_])。
\s匹配空白字符(包括空格、制表符、换行符等)。
\S匹配非空白字符。
^匹配字符串的开头。
$匹配字符串的结尾。
\b匹配单词边界。
\B匹配非单词边界。

3. 字符类

元字符描述
[]匹配括号内的任意一个字符(如 [abc] 匹配 "a"、"b" 或 "c")。
[^]匹配不在括号内的任意一个字符(如 [^abc] 匹配非 "a"、"b"、"c" 的字符)。

4. 量词

元字符描述
*匹配前面的字符 0 次或多次。
+匹配前面的字符 1 次或多次。
?匹配前面的字符 0 次或 1 次。
{n}匹配前面的字符恰好 n 次。
{n,}匹配前面的字符至少 n 次。
{n,m}匹配前面的字符至少 n 次,至多 m 次。
*?非贪婪匹配,尽可能少地匹配。
+?非贪婪匹配,尽可能少地匹配。
??非贪婪匹配,尽可能少地匹配。

5. 分组和捕获

元字符描述
()捕获组,用于分组和提取匹配的内容。
(?:)非捕获组,仅用于分组,不捕获匹配内容。
(?=)正向先行断言,匹配后面跟随指定模式的位置。
(?!)负向先行断言,匹配后面不跟随指定模式的位置。
(?<=)正向后行断言,匹配前面是指定模式的位置。
(?<!)负向后行断言,匹配前面不是指定模式的位置。
(?<name>)命名捕获组,为捕获组命名。

6. 转义字符

元字符描述
\转义字符,用于匹配特殊字符本身(如 \. 匹配句点)。

7. 其他元字符

元字符描述
``表示“或”关系(如 `ab` 匹配 "a" 或 "b")。
\n匹配换行符。
\t匹配制表符。
\r匹配回车符。
\f匹配换页符。
\v匹配垂直制表符。

8. Unicode 相关

元字符描述
\uXXXX匹配 Unicode 字符(如 \u0041 匹配 "A")。
\p{}匹配 Unicode 属性(需启用 u 标志,如 \p{Letter} 匹配任意字母)。
\P{}匹配不满足 Unicode 属性的字符。

9. 标志(Flags)

标志描述
g全局匹配(查找所有匹配项,而不是在第一个匹配项后停止)。
i忽略大小写。
m多行匹配(使 ^ 和 $ 匹配每行的开头和结尾)。
u启用 Unicode 匹配(支持处理 Unicode 字符)。
y粘性匹配(从 lastIndex 开始匹配,且必须从该位置开始匹配成功)。
s单行模式(使 . 匹配包括换行符在内的所有字符)。

10. 示例

10.1 匹配邮箱
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test("test@example.com")); // 输出: true
10.2 匹配手机号
const phoneRegex = /^1[3-9]\d{9}$/;
console.log(phoneRegex.test("13800138000")); // 输出: true
10.3 提取 URL
const urlRegex = /https?:\/\/[^\s]+/;
console.log("Visit https://example.com".match(urlRegex)); // 输出: ["https://example.com"]
10.4 替换敏感词
const sensitiveRegex = /bad|naughty/gi;
console.log("This is a bad word.".replace(sensitiveRegex, "***")); // 输出: "This is a *** word."
10.5 捕获日期
const regex = /(\d{4})-(\d{2})-(\d{2})/;
console.log('2024-10-15'.match(regex)) //输出: '2024-10-15'

11. 总结

JavaScript 正则表达式的元字符是定义匹配模式的核心工具。以下是元字符的分类:

  1. 基本元字符:如 .\d\w^$ 等。

  2. 字符类:如 [][^]

  3. 量词:如 *+?{n} 等。

  4. 分组和捕获:如 ()(?:)(?=) 等。

  5. 转义字符:如 \

  6. 其他元字符:如 |\n\t 等。

  7. Unicode 相关:如 \uXXXX\p{}\P{}

相关文章:

  • HDFS的设计架构
  • 网络安全审计 主要包括哪些内容
  • 树莓派学习(一)——3B+环境配置与多用户管理及编程实践
  • 大型语言模型训练的三个阶段:Pre-Train、Instruction Fine-tuning、RLHF (PPO / DPO / GRPO)
  • /dev/console文件详解
  • 工作遇到相关命令问题记录(持续更新)
  • 深度解码!清华大学第六弹《AIGC发展研究3.0版》
  • 【贪心算法1】
  • 计算机毕业设计Python+DeepSeek-R1大模型空气质量预测分析(源码+文档+PPT+讲解)
  • Linux网络环境配置及常用命令
  • 基于Spring Boot的共享学习经验系统的设计与实现
  • 视频录像机视频通道是指什么
  • 【leetcode100】组合总和Ⅲ
  • 论坛社区基础版【项目测试报告】
  • 【YOLOv12改进trick】StarBlock引入YOLOv12,创新涨点优化,含创新点Python代码,方便发论文
  • django中路由配置规则的详细说明
  • 混合存储HDD+SSD机型磁盘阵列,配上SSD缓存功能,性能提升300%
  • Matlab—从入门到精通的第一天
  • 【AI深度学习基础】PyTorch初探
  • 分布式系统设计(架构能力)
  • zhon中国建设会计学会网站/电子商务营销模式有哪些
  • 广州越秀区是不是中风险地区/抚顺网站seo
  • vps如何搭建网站/长沙网络推广软件
  • 一起来做网站17/seo有哪些网站
  • 网站的二级页面怎么做/网络推广方案的基本思路
  • 南江县住房和城乡建设局网站/小吴seo博客