它最大的优势只有三个字:灵活、灵活、还是灵活。
在日常开发中,正则几乎无处不在。验证邮箱、手机号、URL、身份证号、密码强度......
但每个项目、每个文件都在重复定义相似的正则,既难以维护,也容易出错。
例如:
js
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$/;
if (!emailRegex.test(email)) {
console.error('邮箱格式不正确');
}
或者这样 👇
javascript
if (!/^1[3-9]\d{9}$/.test(phone)) {
alert('手机号不合法');
}
时间一长,项目中就会出现多个版本的相同正则,修改一次需要全局替换,团队之间的标准也难以统一。
最后大家都在问------
"这正则哪来的?"
regex-center 的目标,就是让这些问题彻底消失。

Regex Center = 正则 + 管理
regex-center 是一个专业的正则表达式管理库,内置 100+ 常用正则规则,支持团队统一管理、自定义扩展、类型提示和安全校验。
它不仅能测试字符串是否匹配,还能批量提取、替换、高亮、脱敏等。
核心特性包括:
- ✅ 内置 100+ 常用正则规则
- ✅ 支持命名分组(如
email:strict
、password:strong
) - ✅ 支持正则统一管理与扩展(自定义注入
inject
、覆盖use
) - ✅ TypeScript 全量类型提示
- ✅ ReDoS 安全防护机制(不用自己考虑)
- ✅ 支持提取、替换、统计、高亮等文本处理能力
- ✅ 无依赖设计,可在浏览器和 Node.js 环境下使用
快速上手
安装
bash
npm install regex-center
方案一:直接使用内置正则(开箱即用)
javascript
// 100+ 内置精选正则,覆盖常见场景
import { rx } from 'regex-center';
// 获取和验证
rx.get('email'); // → /^[^\s@]+@[^\s@]+\.[^\s@]+$/
rx.get('phone:CN'); // → /^1[3-9]\d{9}$/
rx.test('email', 'user@example.com'); // true - 用email规则验证邮箱
rx.test('phone:CN', '13800138000'); // true - 用phone:CN规则验证手机号
rx.test(/^[^\s@]+@[^\s@]+\.[^\s@]+$/, 'user@company.com'); // true - 自定义规则
// 分组支持
rx.test('password:strong', 'Password123!'); // 强密码规则
rx.test('email:enterprise', 'user@company.com'); // 企业邮箱规则
// 文本处理 - 同样的参数顺序
const text = '联系方式:user@example.com,手机:13800138000';
rx.extractAll('phone:CN', text); // 用phone:CN规则提取手机号
rx.replaceAll('phone:CN', text, '[手机]'); // 用phone:CN规则替换手机号
rx.highlight('phone:CN', text, '<mark>$&</mark>'); // 用phone:CN规则高亮手机号
方案二:搭建团队正则管理体系(推荐)
javascript
// 完全替换内置正则,使用你的团队标准
rx.use({
email: /^[a-z0-9._%+-]+@company\.com$/, // 只允许公司邮箱
phone: {
default: 'mobile',
mobile: /^1[3-9]\d{9}$/, // 手机号
landline: /^0\d{2,3}-?\d{7,8}$/ // 座机号
},
employeeId: {
pattern: /^EMP\d{6}$/,
description: '员工ID:EMP + 6位数字',
examples: {
valid: ['EMP123456', 'EMP000001'],
invalid: ['emp123456', 'EMP12345']
}
}
});
// 现在只有你定义的正则可用,借助 Regex Center 的管理能力
rx.add('employeeId', /^EMP\d{6}$/); // 添加自定义
rx.get('email') // 获取邮箱正则 /^[a-z0-9._%+-]+@company\.com$/
rx.get('phone:mobile'); // 获取 /^1[3-9]\d{9}$/
rx.test('email', 'user@company.com'); // true
rx.test('email', 'user@gmail.com'); // false
rx.info('employeeId'); // 查看规则说明
场景定制化
自定义规则
如果需要为企业域名定义专属邮箱规则,可以这样写:
js
// 合并:保留内置正则,添加/覆盖指定类型
rx.inject({
email: /^[a-z0-9._%+-]+@company.com$/,
});
之后即可直接使用:
js
rx.test('email', 'jack@company.com'); // true
rx.test('email', 'jack@gmail.com'); // false
批量操作示例
js
const text = '邮箱:a@b.com, c@d.com, e@f.com';
// 高亮匹配内容
rx.highlight('email', text, '<mark>$&</mark>');
// => 邮箱:<mark>a@b.com</mark>, <mark>c@d.com</mark>, <mark>e@f.com</mark>
// 统计匹配次数
rx.count('email', text); // 3
还有extractBatch
、replaceBatch
、countBatch
等你探索.
分组语法
javascript
// 一个类型,多种格式 - 这是 Regex Center 的独创设计
// 密码强度分组
rx.test('password:weak', '123456'); // 弱密码:纯数字
rx.test('password:medium', 'Password123'); // 中等密码:字母+数字
rx.test('password:strong', 'Password123!'); // 强密码:字母+数字+符号
// 邮箱严格程度分组
rx.test('email:basic', 'test@gmail.com'); // 基础格式:宽松验证
rx.test('email:strict', 'user@company.com'); // 严格格式:RFC标准
rx.test('email:enterprise', 'admin@company.com'); // 企业格式:排除免费邮箱
// 数字类型分组
rx.test('number:integer', '123'); // 整数
rx.test('number:decimal', '123.45'); // 小数
rx.test('number:signed', '-123'); // 有符号数
// 查看支持的分组
rx.info('password').groups; // ['weak', 'medium', 'strong']
安全与性能
regex-center 在注入规则时会自动检测潜在的 ReDoS(正则拒绝服务)风险,避免引入性能较差或存在安全隐患的正则表达式。
即使在大规模文本匹配、日志分析等场景下,也能保持稳定性能。
常用内置正则一览:
类型 | 语法 | 说明 | 示例 |
---|---|---|---|
邮箱 | email / email:basic |
基础邮箱格式(默认值) | rx.test('email', 'user@example.com') |
email:strict |
严格邮箱格式 | rx.test('email:strict', 'user@company.com') |
|
email:enterprise |
企业邮箱格式 | rx.test('email:enterprise', 'admin@company.com') |
|
手机号 | phone:CN |
中国手机号 | rx.test('phone:CN', '13800138000') |
phone:US |
美国手机号 | rx.test('phone:US', '+1-555-123-4567') |
|
身份证 | idCard:CN |
中国身份证 | rx.test('idCard:CN', '110101199003077777') |
银行卡 | bankCard:CN |
中国银行卡 | rx.test('bankCard:CN', '6222600260001234567') |
URL | url |
基础URL格式 | rx.test('url', 'https://example.com') |
IP地址 | ip:v4 |
IPv4地址 | rx.test('ip:v4', '192.168.1.1') |
ip:v6 |
IPv6地址 | rx.test('ip:v6', '2001:db8::1') |
|
数字 | number:integer |
整数 | rx.test('number:integer', '123') |
number:decimal |
小数 | rx.test('number:decimal', '123.45') |
|
日期 | date:YYYY-MM-DD |
标准日期 | rx.test('date:YYYY-MM-DD', '2024-01-01') |
密码 | password:medium |
中等强度密码 | rx.test('password:medium', 'Password123') |
password:strong |
强密码 | rx.test('password:strong', 'Password123!') |
💡 提示
email:basic
。- 更多规则如 颜色值、Hex、UUID、域名 等,请查阅 【内置正则大全】。
它跟别的库有啥不同?
特性 / 库 | validator.js | regexr.com | awesome-regex | regex-center |
---|---|---|---|---|
定位 | 校验函数集合 | 在线测试工具 | 正则合集索引 | 正则管理与调用中心 |
使用方式 | isEmail(str) |
手动测试 | 手动复制 | rx.test('email', str) |
内置规则 | 80+ | 无 | 链接资源 | 100+ 内置正则 + 扩展体系 |
自定义规则 | 不支持 | 不支持 | 不支持 | 支持 inject 动态注入 |
类型提示 | 无 | 无 | 无 | TypeScript 全量提示 |
文本处理 | 无 | 有演示 | 无 | extract / replace / highlight |
安全检测 | 无 | 无 | 无 | ReDoS 自动防护 |
适用场景 | 表单验证 | 学习测试 | 查找复制 | 团队级正则标准化管理 |
简而言之:
- validator.js 偏向业务校验函数
- regexr 偏向可视化教学
- awesome-regex 偏向正则收集索引
- regex-center 则是一个"正则的统一中台",集管理、测试、替换、安全与扩展于一体
总结
正则不该成为代码中的"隐形债务"。
regex-center 让正则从"分散拼凑"变成"集中可控",
让开发者能够像使用工具函数一样使用正则。
如果你正在为正则维护困扰,或者希望团队拥有一套标准的正则管理方案,
不妨试试 regex-center。