WebTool

正则表达式入门:20 个常用模式与四个调试技巧

WebTool 团队 · 发布于 2026-09-04 · 正则表达式 / Regex / 开发

正则表达式是用一串符号描述字符串匹配规则的语法,掌握 10 个元字符就能覆盖日常 80% 的需求。 写正则时建议边写边在本站正则测试器里验证,支持实时高亮与分组提取。

元字符速查

符号 含义 示例
. 任意字符(除换行) a.c 匹配 abc
\d \w \s 数字 / 单词字符 / 空白 \d{4} 匹配年份
[abc] [^abc] 字符集合 / 排除 [0-9a-f] 十六进制
* + ? 0+ / 1+ / 0或1 次 colou?r
{n,m} n 到 m 次 \d{6} 邮编
^ $ 行首 / 行尾 ^# 匹配标题行
() 分组(可提取) (\d+)-(\d+)
(?:) 非捕获分组 (?:https?://)
` `

20 个常用模式

场景 模式
中国大陆手机号 ^1[3-9]\d{9}$
邮箱(宽松) ^[\w.+-]+@[\w-]+\.[\w.]+$
URL ^https?://[\w.-]+(?::\d+)?(?:/\S*)?$
IPv4 `^((25[0-5]
日期 YYYY-MM-DD `^\d{4}-(0[1-9]
中文姓名 ^[一-龥]{2,4}$
身份证(18 位) ^\d{17}[\dXx]$
强密码(8+ 含大小写数字) ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
提取 HTML 标签内容 <([a-z]+)[^>]*>(.*?)</\1>
匹配空白行 ^\s*$
十六进制颜色 ^#(?:[0-9a-fA-F]{3}){1,2}$
Base64 ^[A-Za-z0-9+/]+={0,2}$
中文标点 [,。!?;:""''()]
千分位数字 \d{1,3}(?:,\d{3})+
版本号 ^\d+\.\d+\.\d+$
文件扩展名 \.([a-z0-9]+)$
驼峰转单词 ([a-z])([A-Z])$1 $2
行尾空白 [ \t]+$
连续重复字符 (.)\1{2,}
注释行(//) ^\s*//.*$

四个调试技巧

  1. 贪婪 vs 懒惰.* 会吃到最后一個可能的匹配,.*? 遇到第一个就停。匹配引号内容用 "[^"]*"".*" 更安全。
  2. 回溯失控(ReDoS):嵌套量词如 (a+)+ 对恶意输入会指数级回溯,在线服务里校验输入长度上限。
  3. 锚点别忘:校验整个字符串加 ^...$,否则 \d+ 在 "abc123" 里也能命中。
  4. 转义层级:在字符串字面量里写正则(Java/Python),\d 要写成 "\\d",用原始字符串(Python r"")可避免。

最后更新:2026-09-04