JavaScript 正则表达式完整语法指南:定义、元字符与高级用法

阿橙
阿橙
发布时间:2026-10-14| 5人浏览过
原创

正则表达式是 JavaScript 处理字符串的强大工具。本文总结了其定义方法、元字符、特殊符号及修饰符等核心语法的详细规则与应用场景,助力开发者高效编写正则。

正则表达式的定义与版本差异

在 JavaScript 中,定义正则表达式主要有两种方式:

  1. 字面量定义:var re = /正则规则/;。这是最常用的方式。
  2. 构造函数定义:new RegExp('正则规则', '修饰符')。

尽管两者最终都指向 RegExp 对象,但在不同 ECMAScript 版本中表现略有不同。例如在 ES5 中,每次执行字面量定义的函数都会生成新的 RegExp 对象,避免了 ES3 中可能存在的状态共享隐患(即修改一个实例会影响其他调用处)。

1. 直接量字符与转义序列

正则匹配通常包含普通字符和特殊控制字符。非字母字符需通过反斜杠 \ 进行转义或表示特定含义:

  • \o:NUL 字符 (\u0000)
  • \t:制表符 (\u0009)
  • \n:换行符 (\u000A)
  • \v:垂直制表符 (\u000B)
  • \f:换页符 (\u000C)
  • \r:回车符 (\u000D)
  • \xnn:十六进制数 nn 指定的拉丁字符(如 \x0A 等价于 \n)
  • \uxxxx:十六进制数 xxxx 指定的 Unicode 字符(如 \u0009 等价于 \t)
  • \cX:控制字符 ^X(如 \cJ 等价于换行符 \n)

以下标点符号具有特殊含义,需使用 \ 转义:^ $ . * + ? = ! : | \ / ( ) { } [ ]。

2. 字符类匹配

字符类用于简化常见字符集合的书写:

  • [...]:方括号内的任意字符。
  • [^...]:不在方括号内的任意字符(取反)。
  • .:除换行符外的任意字符。
  • \w:ASCII 字母、数字及下划线,等价于 [a-zA-Z0-9_]。
  • \W:非 ASCII 单词字符,等价于 [^a-zA-Z0-9_]。
  • \s:任何 Unicode 空白符(空格、制表符、换行等)。
  • \S:非 Unicode 空白符字符。注意区分 \w 与 \S 的定义域。
  • \d:任何 ASCII 数值,等价于 [0-9]。
  • \D:除了 ASCII 数字之外的任何字符,等价于 [^0-9]。
  • [\b]:退格直接量(特例,单独使用时表示边界,在括号内表示退格)。

3. 重复次数与控制贪婪模式

量词用于指定匹配出现的次数,默认情况下正则表达式采用贪婪匹配:

  • ?:0 次或 1 次。
  • +:1 次或多次。
  • *:0 次或任意次。
  • {n}:恰好 n 次。
  • {m,n}:最少 m 次,最多 n 次。
  • {n,}:n 次或 n 次以上。

非贪婪匹配:在量词后加 ? 可使其变为非贪婪(尽可能少地匹配)。例如 [a+?b+?] 在匹配 aaabb 时,会优先尝试最短匹配而非最长匹配。但需注意,正则引擎仍会从字符串开头寻找第一个可能的匹配位置。

4. 选项、分组与后向引用

  • 选项 |:分隔可选内容,如 (ab|cd)。匹配顺序为从左到右,一旦左侧匹配成功,右侧不再尝试,即使右侧更优。
  • 分组 ():
    • 将子表达式打包,可对其应用量词或逻辑操作(如 /java(script)?/)。
    • 捕获与引用:圆括号内的内容会被捕获,可通过 \1, \2... 引用前面的子表达式。例如 /(['"])[a-z]\1/ 可匹配前后引号一致的内容(如 'abc' 或 "abc")。

5. 锚点与断言

用于限定匹配发生的位置:

  • ^:匹配字符串开头或行的开头(多行模式下)。
  • $:匹配字符串结尾或行的结尾(多行模式下)。
  • \b:单词边界(位于 \w 与 \W 之间)。
  • \B:非单词边界。
  • (?=p):零宽正向先行断言,要求后面紧跟 p,但不消耗 p 的字符。
  • (?!p):零宽负向先行断言,要求后面不紧跟 p。

6. 常用修饰符

修饰符写在正则表达式字面量末尾(/pattern/modifiers):

  • i:忽略大小写。
  • g:全局匹配。找到所有匹配项,而不是找到第一个就停止。
  • m:多行模式。使 ^ 和 $ 匹配每一行的开始和结束,而不仅仅是整个字符串的开始和结束。

注意事项:当使用 g 修饰符时,exec() 和 test() 方法会维护 lastIndex 属性。连续调用时会从上次匹配后的位置继续查找。若需从头重新匹配,应手动将 lastIndex 重置为 0。

以上就是 JavaScript 正则表达式完整语法详解的详细内容,更多关于 JavaScript 编程技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。