什么是正则表达式?
正则表达式(Regular Expression,简称 Regex)是一种用于描述字符串匹配规则的形式语言。它被几乎所有编程语言支持,广泛用于文本搜索、数据验证、字符串提取和替换。
一个简单的例子:
正则:^\d{4}-\d{2}-\d{2}$
含义:匹配 YYYY-MM-DD 格式的日期
测试:2024-05-19 ✓ 2024-5-9 ✗ 2024/05/19 ✗
正则表达式核心语法速查
| 语法 | 含义 | 示例 |
|---|---|---|
. | 匹配任意单个字符(换行除外) | a.c 匹配 abc、a1c |
* | 前面的元素出现 0 次或多次 | ab*c 匹配 ac、abc、abbc |
+ | 前面的元素出现 1 次或多次 | ab+c 匹配 abc、abbc,不匹配 ac |
? | 前面的元素出现 0 次或 1 次 | colou?r 匹配 color 和 colour |
\d | 匹配数字 [0-9] | \d{3} 匹配三位数字 |
\w | 匹配字母、数字、下划线 | \w+ 匹配单词 |
\s | 匹配空白字符(空格、Tab等) | \s+ 匹配一个或多个空白 |
^ | 字符串开始位置 | ^Hello 匹配以 Hello 开头的字符串 |
$ | 字符串结束位置 | world$ 匹配以 world 结尾的字符串 |
[abc] | 字符集,匹配其中任一字符 | [aeiou] 匹配任意元音 |
() | 捕获组 | (\d+)-(\d+) 分别捕获两段数字 |
常用正则表达式模式
# 验证邮箱
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
# 验证手机号(中国大陆)
^1[3-9]\d{9}$
# 验证 URL
https?://[^\s/$.?#].[^\s]*
# 提取 IP 地址
\b(?:\d{1,3}\.){3}\d{1,3}\b
# 验证强密码(8位以上,含大小写和数字)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
# 匹配 HTML 标签
<[^>]+>