主题
正则表达式速查
一、语法速查
字符类
[]匹配括号内任意一个字符;[^]取反(不在括号内).任意单字符(除换行);\.点本身;-/_不用转义
量词
*={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$/,
};