Skip to content

正则表达式速查

一、语法速查

字符类

  • [] 匹配括号内任意一个字符;[^] 取反(不在括号内)
  • . 任意单字符(除换行);\. 点本身;- / _ 不用转义

量词

  • * = {0,}+ = {1,}? = {0,1}{n} 固定 n 位;{n,} / {n,m} 区间
  • a|b 逻辑"或"

锚点与边界

  • ^ 开头;$ 结尾;\b 单词边界;\B 非单词边界

预定义类

  • \w = [a-zA-Z0-9_]\W 非;\d = [0-9]\D 非数字;\s 空白;\S 非空白

转义提醒. * + ? ( ) [ ] { } | ^ $ \ 等元字符需按需转义。

二、常用正则示例

数字 / 金额

用途正则
正整数(不含 0,无前导零)^[1-9]\d*$
非负整数(0 和正整数)^\d+$
非负整数(排除前导零,如 01✗)^(0|[1-9]\d*)$
整数(含负,允许前导零)^-?\d+$
整数(含负,排除前导零)^-?(0|[1-9]\d*)$
0 单独^0$
1~99(正整数,至多两位)^[1-9]\d?$
0~99(非负,至多两位)^\d{1,2}$
1~100(正整数闭区间)^([1-9]|[1-9]\d|100)$
小数(正)^\d+(\.\d+)?$
正负数 / 小数^[-+]?\d+(\.\d+)?$
金额(2 位小数)^\d+(\.\d{1,2})?$
0~100(含小数)`^(\d{1,2}(.\d+)?

字符 / 文本

用途正则
纯汉字^[\u4e00-\u9fa5]+$
数字 + 字母(无下划线)^[A-Za-z0-9]+$
字母 / 数字 / 下划线^\w+$
含大小写字母 + 数字,6~18 位^[A-Za-z0-9]{6,18}$
强密码(大小写+数字+特殊符)^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$
不含空格^\S+$

联系方式

用途正则
手机号(大陆 1 开头 11 位)^1[3-9]\d{9}$
固话(区号-号码)^0\d{2,3}-?\d{7,8}$
邮箱^[\w.-]+@[\w.-]+\.\w+$
身份证(18 位,末位可 X)^\d{17}[\dXx]$

网络 / 时间

用途正则
URL(http/https)^https?://[\w.-]+(/[\w./?%&=]*)?$
IPv4^(\d{1,3}\.){3}\d{1,3}$
日期 YYYY-MM-DD^\d{4}-\d{2}-\d{2}$
时间 HH:MM`^([01]\d

其它

用途正则
HTML 标签<[^>]+>
提取引号内内容"([^"]*)"
去掉首尾空白`^\s+
匹配空行^\s*$

提示:正则区分引擎(JS / Java / Python)细节略有差异,例如 JS 不支持 (?P<name>) 命名组、换行符处理不同;以上示例通用性最高。可用 https://regex101.com 在线验证。

⚠️ 复制注意:上表正则用了 | 表示"或",但 | 同时是 Markdown 表格的分隔符,源码里写成了 \| 来转义。 如果你直接复制源码里的正则(包含 \| 反斜杠+竖线),在代码里用会出错——\| 手动改成 | 单竖线再用。 或者用下方独立版本,直接复制即可:

javascript
// 独立版(直接复制,无转义混淆)
const REG = {
  // 数字
  positiveInt:     /^[1-9]\d*$/,              // 正整数(不含0、无前导零)
  nonNegInt:       /^(0|[1-9]\d*)$/,          // 非负整数(排除前导零)
  signedInt:       /^-?(0|[1-9]\d*)$/,        // 整数(含负,排除前导零)
  amount2:         /^\d+(\.\d{1,2})?$/,       // 金额(2位小数)
  range0_100:      /^(\d{1,2}(\.\d+)?|100)$/, // 0~100(含小数)

  // 文本
  chinese:         /^[\u4e00-\u9fa5]+$/,      // 纯汉字
  alphaNum:        /^[A-Za-z0-9]+$/,          // 字母+数字
  strongPass:      /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/, // 强密码

  // 联系方式
  mobile:          /^1[3-9]\d{9}$/,           // 大陆手机号
  idCard:          /^\d{17}[\dXx]$/,          // 18位身份证(X/x均放行)
  email:           /^[\w.-]+@[\w.-]+\.\w+$/,  // 邮箱(宽松版)

  // 网络/时间
  url:             /^https?:\/\/[\w.-]+(\/[\w./?%&=-]*)?$/,
  ipv4:            /^((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)$/, // 严格IPv4
  date:            /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/, // 严格日期
  time:            /^([01]\d|2[0-3]):[0-5]\d$/,
};

© 2026 开发速查