零寬斷言**不消耗字符**,只在當前位置**判斷條件**,滿足則繼續匹配,不滿足則回溯失敗。四種核心形式:
速查表
| 語法 | 名稱 | 含義 | 例子 | 匹配結果 |
| `(?=pattern)` | 正向順序環視 | **右側**必須匹配 pattern | `\d+(?=元)` | `"100元"` → `100` |
| `(?!pattern)` | 負向順序環視 | **右側**必須**不**匹配 pattern | `\d+(?!元)` | `"100美元"` → `100` |
| `(?<=pattern)` | 正向逆序環視 | **左側**必須匹配 pattern | `(?<=¥)\d+` | `"¥99"` → `99` |
| `(? | 負向逆序環視 | **左側**必須**不**匹配 pattern | `(? | `"$99"` → `99` |
實戰場景
- **千分位分隔**:`(\d)(?=(\d{3})+$)` → `replace('$1,')`。
- **密碼強度**:`^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$`(含小寫、大寫、數字、≥8位)。
- **單詞邊界替代**:`(?
- **HTML 標籤內容**:`(?<=).*?(?=)` 提取標題(需支援逆序環視)。
瀏覽器支援現狀(2024)
- 順序環視 `(?=)` `(?!)`:全瀏覽器支援(ES2018 前)。
- 逆序環視 `(?<=)` `(?
- 生產環境若需兼容舊瀏覽器,改用**捕獲組 + 替換函數**或**兩次匹配**繞過。
推薦深度閱讀
- 《正則表達式必知必知》第 8 章。
- CSDN 博主 lxcnn 兩篇圖解:
`https://blog.csdn.net/lxcnn/article/details/4304754`
`https://blog.csdn.net/lxcnn/article/details/5126888`