正则表达式速查表
全面的正则表达式快速参考,包含 7 个分类共 42 个模式。搜索并点击复制。
字符类
模式
描述
示例
.
除换行符外的任意字符
a.c 匹配 "abc"、"a1c"
\d
数字 (0-9)
\d{3} 匹配 "123"
\D
非数字
\D+ 匹配 "abc"
\w
单词字符 (a-z, A-Z, 0-9, _)
\w+ 匹配 "hello_123"
\W
非单词字符
\W 匹配 "@"、" "
\s
空白字符(空格、制表符、换行符)
a\sb 匹配 "a b"
\S
非空白字符
\S+ 匹配 "hello"
[abc]
a、b 或 c 中的任一个
[aeiou] 匹配元音字母
[^abc]
非 a、b 或 c
[^0-9] 匹配非数字
[a-z]
范围:a 到 z
[a-zA-Z] 匹配任意字母
锚点
模式
描述
示例
^
字符串/行的开始
^Hello 匹配 "Hello world"
$
字符串/行的结束
world$ 匹配 "Hello world"
\b
单词边界
\bcat\b 匹配 "cat" 不匹配 "catch"
\B
非单词边界
\Bcat\B 匹配 "concatenate"
量词
模式
描述
示例
*
零次或多次
ab*c 匹配 "ac"、"abc"、"abbc"
+
一次或多次
ab+c 匹配 "abc"、"abbc" 不匹配 "ac"
?
零次或一次(可选)
colou?r 匹配 "color"、"colour"
{n}
恰好 n 次
\d{4} 匹配 "2024"
{n,}
n 次或更多次
\d{2,} 匹配 "12"、"123"
{n,m}
n 到 m 次之间
\d{2,4} 匹配 "12"、"1234"
*?
零次或多次(懒惰模式)
<.*?> 仅匹配第一个标签
+?
一次或多次(懒惰模式)
.+? 尽可能少地匹配
分组与引用
模式
描述
示例
(abc)
捕获组
(\d+)-(\d+) 捕获两个部分
(?:abc)
非捕获组
(?:ab)+ 匹配 "abab"
(?<name>abc)
命名捕获组
(?<year>\d{4}) 捕获为 "year"
\1
反向引用第 1 组
(\w+)\s\1 匹配 "the the"
(a|b)
选择(a 或 b)
(cat|dog) 匹配两者之一
环视断言
模式
描述
示例
(?=abc)
正向先行断言
\d(?=px) 在 "5px" 中匹配 "5"
(?!abc)
负向先行断言
\d(?!px) 在 "5em" 中匹配 "5"
(?<=abc)
正向后行断言
(?<=\$)\d+ 在 "$100" 中匹配 "100"
(?<!abc)
负向后行断言
(?<!\$)\d+ 在 "100" 中匹配 "100"
标志
模式
描述
示例
g
全局 - 匹配所有出现
/cat/g 匹配所有 "cat" 实例
i
不区分大小写匹配
/hello/i 匹配 "Hello"、"HELLO"
m
多行 - ^ 和 $ 匹配行的开始/结束
/^line/m 匹配每行的开头
s
点号匹配换行符
/a.b/s 匹配 "a\nb"
u
Unicode 支持
/\p{L}/u 匹配 Unicode 字母
常用模式
模式
描述
示例
^[\w.-]+@[\w.-]+\.\w{2,}$
电子邮件(基础)
user@example.com
^https?://[\w.-]+(?:/[\w.-]*)*$
URL(基础)
https://example.com/path
^\d{1,3}(\.\d{1,3}){3}$
IPv4 地址
192.168.1.1
^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
十六进制颜色
#ff6600 或 #f60
^\d{4}-\d{2}-\d{2}$
日期 (YYYY-MM-DD)
2024-01-15
^\+?\d{1,3}[-.\s]?\d{4,14}$
电话号码(基础)
+1-555-1234567
如何使用正则表达式速查表
- 1.浏览分类或使用搜索栏查找特定的模式、描述或示例。
- 2.点击分类按钮按主题筛选(字符类、量词、环视断言等)。
- 3.点击任意行复制模式到剪贴板。
- 4.使用常用模式部分获取电子邮件、URL、日期等现成的正则表达式。
常见问题
什么是正则表达式(regex)?
正则表达式是定义搜索模式的字符序列。用于字符串中的模式匹配 -- 查找、替换或验证文本。几乎所有编程语言和文本编辑器都支持正则表达式。
贪婪量词和懒惰量词有什么区别?
贪婪量词(*、+、{n,m})尽可能多地匹配文本。懒惰量词(*?、+?、{n,m}?)尽可能少地匹配。例如,给定 "<b>bold</b>",模式 <.*>(贪婪)匹配整个字符串,而 <.*?>(懒惰)只匹配 "<b>"。
什么是先行断言和后行断言?
先行断言 (?=...) 和后行断言 (?<=...) 是零宽度断言。它们检查模式是否存在但不将其包含在匹配中。正向变体断言模式存在;负向变体 (?!...) 和 (?<!...) 断言模式不存在。
如何测试正则表达式?
你可以使用我们的 Regex 测试工具(/regex-tester)来测试模式,支持实时匹配和高亮。regex101.com 等在线工具也提供每个模式组件的详细说明。