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号
浙公网安备 33010602011771号