#numbers #phone #formatter #parser

phonenumber

用于解析、格式化和验证国际电话号码的库

13 个版本

0.3.6+8.13.36 2024年7月9日
0.3.4+8.13.34 2024年4月11日
0.3.3+8.13.9 2023年9月19日
0.3.2+8.13.9 2023年3月31日
0.1.0+8.7.0 2017年7月31日

#69解析实现

Download history 30767/week @ 2024-05-01 32713/week @ 2024-05-08 39621/week @ 2024-05-15 34215/week @ 2024-05-22 28860/week @ 2024-05-29 31274/week @ 2024-06-05 28867/week @ 2024-06-12 30501/week @ 2024-06-19 24642/week @ 2024-06-26 25329/week @ 2024-07-03 30801/week @ 2024-07-10 30642/week @ 2024-07-17 28190/week @ 2024-07-24 29057/week @ 2024-07-31 30876/week @ 2024-08-07 30660/week @ 2024-08-14

125,003 每月下载量
33crate中(22 个直接使用)

Apache-2.0

13MB
3.5K SLoC

phonenumber

CI Build Crates.io phonenumber License

Rust 版本的 libphonenumber。目前最低支持的 Rust 版本 (MSRV) 为 1.58.0。

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
phonenumber = "0.3"

示例

以下示例演示了如何解析、验证和格式化给定的电话号码。

use phonenumber::Mode;
use std::env;

fn main() {
	let mut args = env::args().skip(1).collect::<Vec<_>>();

	if args.len() < 1 {
		panic!("not enough arguments");
	}

	let number  = args.pop().unwrap();
	let country = args.pop().map(|c| c.parse().unwrap());

	let number = phonenumber::parse(country, number).unwrap();
	let valid  = phonenumber::is_valid(&number);

	if valid {
		println!("\x1b[32m{:#?}\x1b[0m", number);
		println!();
		println!("International: {}", number.format().mode(Mode::International));
		println!("     National: {}", number.format().mode(Mode::National));
		println!("      RFC3966: {}", number.format().mode(Mode::Rfc3966));
		println!("        E.164: {}", number.format().mode(Mode::E164));
	}
	else {
		println!("\x1b[31m{:#?}\x1b[0m", number);
	}
}

依赖项

~5–7MB
~129K SLoC