Nginx 中的正则表达式
以下是修正后的正则表达式元字符和重复符号的Markdown表格:
1. 元字符表
| 代码 | 说明 |
|---|---|
. |
匹配除换行符以外的任意字符 |
\w |
匹配字母、数字、中文、下划线 |
\s |
匹配空白字符(空格、制表符等) |
\d |
匹配数字 |
\b |
匹配单词的开始或结束 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结尾 |
2. 重复符号表
| 代码 | 说明 |
|---|---|
* |
重复前一个字符或子表达式 零次或多次(例如 a* 匹配空字符串、a、aa 等) |
+ |
重复前一个字符或子表达式 一次或多次(例如 a+ 匹配 a、aa,但不匹配空字符串) |
? |
重复前一个字符或子表达式 零次或一次(例如 colou?r 匹配 color 或 colour) |
{n} |
重复前一个字符或子表达式 精确 n 次(例如 \d{4} 匹配 4 位数字) |
{n,} |
重复前一个字符或子表达式 至少 n 次(例如 a{2,} 匹配 aa、aaa 等) |
{n,m} |
重复前一个字符或子表达式 n 到 m 次(例如 \d{2,4} 匹配 2 到 4 位数字) |
3. 示例
1. 核心概念
-
转义符号
使用反斜杠\取消元字符的特殊含义。例如,匹配.需写成\.,匹配/需写成\/。 -
分组与取值
使用括号()对内容进行分组,并通过$1,$2等引用分组结果。例如:
(\d+)匹配数字并保存为第一个分组,后续可通过$1调用。
2. 示例说明
场景描述
- 原始 URL:
/admin/website/article/35/change/uploads/party/5.jpg - 目标 URL:
/static/uploads/party/5.jpg
正则表达式与重写规则修正
-
匹配原始 URL 的正则表达式
^/admin/website/article/(\d+)/change/uploads/(\w+)/(\w+)\.(png|jpg|gif|jpeg|bmp)$- 修正说明:
- 使用
^和$确保精确匹配完整路径。 - 修正路径分隔符(使用
/而非\)。 - 文件扩展名调整为独立选项(
png|jpg|gif|jpeg|bmp)。 - 分组结构:
$1匹配数字 ID,$2匹配目录名,$3匹配文件名,$4匹配扩展名。
- 使用
- 修正说明:
-
重写规则
rewrite ^/admin/website/article/(\d+)/change/uploads/(\w+)/(\w+)\.(png|jpg|gif|jpeg|bmp)$ /static/uploads/$2/$3.$4 last;- 修正说明:
- 路径修正为
/article以匹配原始 URL。 - 使用
$2和$3分别引用目录名和文件名,$4引用扩展名。
- 路径修正为
- 修正说明:
3. 关键语法解析
| 语法 | 说明 |
|---|---|
(\d+) |
匹配 1 个或多个数字,保存为分组 |
(\w+) |
匹配字母/数字/下划线,保存为分组 |
\.(png) |
匹配 .png 扩展名 |
$2 |
引用第二个分组的结果 |
4. 验证工具推荐
- 正则表达式测试:
RegExr 或 Regex101 - Nginx 重写规则测试:
使用 NGINX Rewrite Tester - linux pcretest工具:

浙公网安备 33010602011771号