libphonenumber-js 使用指南:全球电话号码处理解决方案

libphonenumber-js 使用指南:全球电话号码处理解决方案

【免费下载链接】libphonenumber-js A simpler (and smaller) rewrite of Google Android's libphonenumber library in javascript 【免费下载链接】libphonenumber-js 项目地址: https://gitcode.com/gh_mirrors/li/libphonenumber-js

项目简介

libphonenumber-js 是一个轻量级的 JavaScript 电话号码处理库,它是 Google Android 的 libphonenumber 库的简化重写版本。该项目专注于解析、格式化和验证全球电话号码,为开发者提供了高效且易于使用的电话号码操作功能。相比原版 Google 库的 550 kB 大小,libphonenumber-js 仅需 145 kB,显著减少了资源占用。

快速开始

安装方法

通过 npm 快速安装:

npm install libphonenumber-js

或者使用 yarn:

yarn add libphonenumber-js

核心功能演示

解析和格式化电话号码的基本用法:

import { parsePhoneNumberFromString } from 'libphonenumber-js';

const phoneNumber = parsePhoneNumberFromString('+41 44 668 18 00');
if (phoneNumber) {
  console.log(phoneNumber.formatNational()); // 044 668 18 00
  console.log(phoneNumber.formatInternational()); // +41 44 668 18 00
}

核心功能详解

电话号码解析

解析完整的电话号码字符串:

import parsePhoneNumber from 'libphonenumber-js';

const phoneNumber = parsePhoneNumber(' 8 (800) 555-35-35 ', 'RU');

if (phoneNumber) {
  console.log(phoneNumber.country); // RU
  console.log(phoneNumber.number); // +78005553535
  console.log(phoneNumber.isPossible()); // true
  console.log(phoneNumber.isValid()); // true
}

实时输入格式化

提供用户友好的实时电话号码输入体验:

import { AsYouType } from 'libphonenumber-js';

const formatter = new AsYouType('US');
console.log(formatter.input('2133734')); // (213) 373-4

电话号码验证

确保输入的电话号码格式正确:

import {
  isPossiblePhoneNumber,
  isValidPhoneNumber,
  validatePhoneNumberLength
} from 'libphonenumber-js';

console.log(isPossiblePhoneNumber('8 (800) 555-35-35', 'RU'); // true
console.log(isValidPhoneNumber('8 (800) 555-35-35', 'RU'); // true
console.log(validatePhoneNumberLength('8 (800) 555', 'RU'); // TOO_SHORT

元数据集选择策略

libphonenumber-js 提供多种元数据集以适应不同需求:

min 元数据集(默认)

  • 大小:约 80 kB
  • 适用场景:仅需验证电话号码长度,无需严格验证电话号码数字或获取电话号码类型。

max 元数据集

  • 大小:约 145 kB
  • 适用场景:需要严格电话号码数字验证和电话号码类型检测。

mobile 元数据集

  • 大小:约 95 kB
  • 适用场景:专注于移动电话号码处理,同时保留 max 元数据集的完整功能。

使用方法

根据需求选择对应的子包导入:

// 使用 min 元数据集(默认)
import parsePhoneNumber from 'libphonenumber-js';

// 使用 max 元数据集
import parsePhoneNumber from 'libphonenumber-js/max';

// 使用 mobile 元数据集
import parsePhoneNumber from 'libphonenumber-js/mobile';

实际应用案例

文本中查找电话号码

从大段文本中提取所有电话号码:

import { findPhoneNumbersInText } from 'libphonenumber-js';

const results = findPhoneNumbersInText(`
  技术支持电话:+7 (800) 555-35-35
  美国本地分支机构:(213) 373-4253 转 1234
`, 'US');

results.forEach(result => {
  console.log(`找到号码:${result.number.number},位置:${result.startsAt}-${result.endsAt}`);

获取国家信息

import { getCountries } from 'libphonenumber-js';

const countries = getCountries();
console.log('支持的国家代码:', countries);

项目结构与模块

libphonenumber-js 采用模块化设计,主要目录结构包括:

  • source/:源代码目录,包含所有核心功能的实现
  • min/max/mobile/:不同元数据集的子包
  • test/:测试文件目录
  • website/:演示网站相关文件

关键模块说明

  • AsYouType.js:实时输入格式化功能
  • PhoneNumber.js:电话号码核心类
  • metadata.js:元数据处理模块
  • findNumbers/:电话号码查找相关功能

开发与构建

项目使用现代化的构建工具链:

  • Babel:代码转译
  • Rollup:模块打包
  • Jest/Mocha:测试框架

构建命令

# 生成元数据
npm run metadata:generate

# 运行测试
npm test

# 完整构建
npm run build

最佳实践建议

  1. 选择合适的元数据集:根据项目需求在 min、max 或 mobile 中选择最合适的版本
  2. 考虑国际化:为不同地区的用户提供适当的电话号码格式
  3. 错误处理:始终检查解析结果是否为 null
  4. 性能优化:对于大量电话号码处理,考虑缓存解析结果

总结

libphonenumber-js 作为一个高效、轻量级的电话号码处理库,为开发者提供了完整的电话号码解析、格式化和验证解决方案。通过合理选择元数据集,可以在功能完整性和性能之间找到最佳平衡点。无论是简单的电话号码验证还是复杂的国际电话号码处理,该库都能提供可靠的解决方案。

电话号码处理示例

【免费下载链接】libphonenumber-js A simpler (and smaller) rewrite of Google Android's libphonenumber library in javascript 【免费下载链接】libphonenumber-js 项目地址: https://gitcode.com/gh_mirrors/li/libphonenumber-js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值