DevBox

正则表达式是什么?一文看懂基础语法

DevBox 团队 · 最后更新 2026-07-02

想直接生成?试试 正则表达式测试器 —— 填参数即出结果。 打开工具 →

正则表达式是什么

正则表达式(Regular Expression,简称 regex 或正则)是一串用来按规则匹配文本的”模式”。比如你想从一段文字里找出所有邮箱、校验手机号格式、或把日期批量替换——用正则一行就能描述,不用写一堆 if 判断。

它几乎在所有编程语言、编辑器和命令行工具(grep、sed)里都能用,是处理文本的通用利器。

基本组成

一条正则由普通字符元字符(有特殊含义的符号)组成。例如 \d{4}-\d{2} 里:\d 是”数字”,{4} 是”重复 4 次”,- 是普通的连字符。

常用元字符速查

符号含义例子
.任意单个字符(默认不含换行)a.c 匹配 abc、a1c
\d数字 0-9\d\d 匹配 42
\w字母、数字或下划线\w+ 匹配 hello_1
\s空白字符(空格/制表/换行)
[abc]字符类:方括号内任一个[aeiou] 匹配任一元音
[^abc]取反:不是这些字符[^0-9] 匹配非数字
[a-z]范围[a-z] 匹配小写字母

量词(重复次数)

符号含义
*0 次或多次
+1 次或多次
?0 次或 1 次(可选)
{n}恰好 n 次
{n,}至少 n 次
{n,m}n 到 m 次

分组与锚点

  • 分组 ( ):把一部分括起来,可整体重复或提取。如 (ab)+ 匹配 ababab;(?<year>\d{4}) 是命名组。
  • |:cat|dog 匹配 cat 或 dog。
  • 锚点:^ 匹配开头,$ 匹配结尾,\b 匹配单词边界。如 ^\d+$ 表示”整串都是数字”。

常见误区

  • 忘记转义:.*( 等本身是元字符,要匹配字面量需转义为 \.\*\(
  • 贪婪匹配:.* 默认尽可能多匹配,常导致”匹配过头”,需要时用非贪婪 .*?

下一步

常见问题

正则表达式在不同语言里通用吗?

基础语法(字符类、量词、分组、锚点)在 JavaScript、Python、Java、PHP 等大多数语言里通用;少数高级特性(如某些环视、\p{} 属性、命名组语法)有差异,复杂场景建议在目标语言实测。

学正则要背下所有符号吗?

不用。先掌握最常用的十来个元字符(. * + ? [] () ^ $ \d \w \s),配合在线测试器边写边看高亮,很快就能上手。

继续了解 正则测试