🔥🔥「别再复制正则了」用 regex-center 一站式管理、校验、提取所有正则

它最大的优势只有三个字:灵活、灵活、还是灵活。

在日常开发中,正则几乎无处不在。验证邮箱、手机号、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:strictpassword: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

还有extractBatchreplaceBatchcountBatch等你探索.

分组语法

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 默认等同于 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

相关推荐
Onion2 小时前
解决 iframe 中鼠标事件丢失问题:拖拽功能的完整解决方案
前端·javascript·vue.js
程序员飞哥2 小时前
真正使用的超时关单策略是什么?
java·后端·面试
南北是北北2 小时前
Coil图片缓存机制
面试
GISer_Jing2 小时前
前端知识详解——HTML/CSS/Javascript/ES5+/Typescript篇/算法篇
前端·javascript·面试
一枚前端小能手2 小时前
🔧 jQuery那些经典方法,还值得学吗?优势与式微的真相一次讲透
前端·javascript·jquery
写不来代码的草莓熊2 小时前
vue前端面试题——记录一次面试当中遇到的题(4)
前端·javascript·vue.js·面试
Ratten2 小时前
【uniapp】---- 在 uniapp 实现 app 的版本检查、下载最新版本、自动安装
前端
立方世界3 小时前
HTML编写规则及性能优化深度解析:从基础到企业级实践
前端·性能优化·html
JarvanMo3 小时前
请停止用 Java 习惯来破坏你的 Flutter 代码
前端