返回博客列表

JavaScript 手机号正则验证与批量处理

整理了几种常见的手机号验证场景:11 位号码提取、重复检测、跨平台状态同步。用 Set 做排重比数组遍历效率高很多,特别是数据量大的时候。

基础正则提取

const phoneRegex = /1[3-9]\d{9}/g; const text = "联系 13800138000 或 15912345678"; const phones = text.match(phoneRegex); // ['13800138000', '15912345678']

重复检测

const seen = new Set(); const duplicates = []; phones.forEach(phone => { if (seen.has(phone)) { duplicates.push(phone); } else { seen.add(phone); } });

跨平台状态同步

我的充值助手支持多个平台(网易云、芒果、优酷),每个平台有独立的已充值集合。用对象存储,键是平台名,值是 Set。

性能对比

测试 10000 个号码:数组 includes 遍历平均 120ms,Set has 平均 2ms。差距巨大。