正则验证模式
汇集了 16 个实务中反复要用到的正则表达式:邮箱、URL、电话号码、密码强度,还有 ID、日期格式,以及两个用于文本清理的查找替换模式。点击卡片即可复制不带分隔符和标志的纯模式字符串,粘贴到正则工具的 Pattern 输入框就能直接用真实文本测试。大多数是校验整个字符串的锚定(^...$)模式,只有去标签和空白整理这两项不带锚定,以便在较长文本中找出所有匹配。
打开工具 →
邮箱地址
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
URL(http/https)
^https?://[\w.-]+(?::\d+)?(?:/\S*)?$
电话号码(E.164 国际格式)
^\+[1-9]\d{1,14}$
韩国手机号码
^01[016789]-?\d{3,4}-?\d{4}$
强密码(8 位以上,含大小写字母·数字·符号)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,}$
用户名(3-16 位,字母·数字·下划线)
^[a-zA-Z0-9_]{3,16}$
URL slug(短横线命名)
^[a-z0-9]+(?:-[a-z0-9]+)*$
UUID v4
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
十六进制颜色码
^#(?:[0-9a-fA-F]{3}){1,2}$
去除 HTML 标签
<[^>]+>
IPv4 地址
^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$
ISO 8601 日期(YYYY-MM-DD)
^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$
24 小时制时间(HH:MM)
^([01]\d|2[0-3]):[0-5]\d$
美国邮政编码(ZIP)
^\d{5}(?:-\d{4})?$
信用卡号(仅格式校验,16 位每 4 位一组)
^\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{1,4}$
折叠连续空白
\s{2,}常见问题
- 这些模式怎么用?
- 点击卡片会复制不带分隔符(/)和标志的纯模式字符串。粘贴到正则工具的 Pattern 输入框,再在测试区输入文本,匹配结果会实时高亮显示。标志在工具里单独设置(默认值 g 不会在第一个匹配处停下,而是查找所有匹配)。
- 邮箱模式能捕获所有有效地址吗?
- 不能。完整的 RFC 5322 语法非常复杂,写对需要几十行。实务中通常用这种实用模式过滤明显的输入错误或空值,再通过发送验证邮件来确认地址是否真实存在。
- 信用卡模式能验证卡号是否有效吗?
- 不能。这个模式只检查 16 位数字是否按每 4 位一组排列(允许用空格或短横线分隔),不做校验和(Luhn 算法)验证,也不适用于 Amex 这类 15 位卡号。实际有效性校验应交给支付网关处理。
- 密码模式里的 (?=...) 是什么意思?
- 这是前瞻(lookahead)。它只检查条件而不消耗字符,因此一个模式就能要求小写字母、大写字母、数字、符号同时存在,而不管它们出现的顺序。这比强制固定顺序的一长串模式要清晰得多。