JS正则表达式速记

小鱼
2025-07-25 18:18:01
JavaScript正则表达式

单个字符

/y/:匹配单个字符y

/\*/:匹配*,因为*在正则中有特殊含义,但实际应用中*可以能出现在字符串中,若匹配这类特殊字符需要用转义字符 \+特殊字符 来匹配(特殊字符转义)

特殊字符 正则表达式 记忆法
换行符 \n 常用符号,很niu牛,代表很xing行,也就是hang行
换页符 \f fen分割,分页
回车符 \r re热,开车很热,开车需要热车
空白符 \s sha傻,脑子空白,傻白甜
制表符 \t tu图表,制tu图
垂直制表符 \v ↓箭(尖)头朝下,或者css中vertical-align文字垂直方向,垂直于地面
回退符 [\b] 常用路由back,如router.back(),返回,回退,使用[]符号是避免和\b(单词边界)重复

多个字符

/[0-9]/:匹配任意0到9

/[a-z]/:匹配任意a到z

多个字符使用中括号 []加上要匹配的多个字符表示,如[12],可同时匹配1,2,多个数组可以用范围 -表示,如 [1-5] 匹配1,2,3,4,5

匹配区间 正则表达式 记忆法
除了换行符之外的任何字符 . 类似...,表示还有其他话没说
单个数字[0-9] \d digit,dan单个
除了[0-9] \D 大写都代表非,取反,not digit
包括下划线在内的单个字符[A-Za-z0-9_] \w word,wai外语,英文数字下划线
非单字字符 \W not word
匹配空白字符,包括空格、制表符、换页符和换行符 \s sha傻,脑子空白,傻白甜,匹配所有空白字符
匹配非空白字符 \S not space

循环与复用

? :匹配0个字符或1个字符(0|1),通常用于匹配两个相近的词,如匹配 cssscss,要保证都匹配到只需要使用 /s?css/,前面的 s 表示可有可无

*:匹配0个字符或无数个字符(>=0),通常用来过滤某些可有可无的字符串

+:匹配同个字符出现1次或多次的情况(>=1)

特定次数

{}:匹配特定的重复次数,如匹配3次y,那么使用 /y{3}/ 这个正则,或者y匹配至少两次用 /a{2,}/这个正则。

- {x}: x次
- {min, max}: 介于min次到max次之间
- {min, }: 至少min次
- {0, max}: 至多max次
匹配规则 元字符 记忆法
0次或1次 ? 问题,是否存在?
0次或无数次 * 常用,所有,任意包含空
1次或无数次 + +=1,至少也是一次
特定次数 {x}, {min, max} 类似数学中的区间表示,[min, max]

边界

边界和标志 正则表达式 记忆法
单词边界 \b bian边界
非单词边界 \B not bian边界
字符串开头 ^ 像不像山的顶部,代表头,开头
字符串结尾 $ 美元使用 $ 理解为钱可以解决(完成)大部分事
多行模式 m标志 max,很多,m像不像两个n,多行
忽略大小写 i标志 ignore case 忽略的意思
全局模式 g标志 global 全局

子表达式

  • 回溯引用

回溯引用是通过反斜杠加数字(\1\2等)引用之前捕获的分组内容,用于匹配重复模式或验证特定结构的字符串‌

检查连续重复的单词或数字‌

"hello hello".match(/(\w+)\s+\1/g); // 返回 ["hello hello"]

确保HTML标签成对出现‌

/<([hH][1-6])>.*?<\/\1>/.test("<h1>Heading</h1>"); // true

通过 \n 引用第 n 个分组的内容‌

/(\d{3})-(\d{3})-\1/.test("123-456-123"); // true(匹配第三个数字与第一个相同)
  • 向前查找

(?=pattern):匹配肯定,匹配后面紧跟 pattern 的位置,但结果中不会包含 pattern

(?!pattern):匹配否定

"http://baidu.com".match(/\w+(?=:)/g); // 输出["http"]
  • 向后查找

(?<=pattern):匹配肯定,匹配前面是 pattern 的位置,结果中不包含 pattern

(?<!pattern):匹配否定

"$88.88".match(/(?<=\$)\d+\.\d+/g); // 输出 ["88.88"]
回溯查找 正则 描述
引用 \0,\1,\2 和 $0, $1, $2 转义+ 数字,匹配重复模式或验证特定结构的字符串
非捕获组 (?:) 仅分组,不存储匹配结果,无法回溯引用‌
前向查找 (?=) 匹配后面必须存在的
前向负查找 (?!) 匹配后面不能出现的
后向查找 (?<=) 匹配前面必须存在的
后向负查找 (?<!) 匹配前面不能出现的

逻辑操作

与、或、非‌是三种核心逻辑操作,用于构建复杂的匹配规则

默认通过连续书写子表达式实现,要求所有条件‌同时出现‌。

/cat/  // 匹配连续的字符 "c"、"a"、"t"

[]:匹配括号内任意‌单个字符‌,适用于单字符选择。

/[au]/  // 匹配 "a" 或 "u"

|:匹配多个子表达式中的任意一个,支持多字符组合

/(cat|dog)/  // 匹配 "cat" 或 "dog"

[^]:匹配‌不在‌指定集合中的字符

/[^0-9]/  // 匹配非数字字符

(?!X):右侧不能出现X

(?<!X):左侧不能出现X

/\d+(?!%)/  // 匹配数字后不跟 "%" 的情况
/(?<!-)\d+/  // 匹配不以 "-" 开头的数字
Copyright © 2025 aipanzhou.com All Rights Reserved.
备案号:黔ICP备2023000741号-1
贵公网安备 52022202000096号