字符串
对 string
| number
数据类型进行掩码,内置一些常用预设掩码规则,也可自定义规则。
全掩码 all
ts
import { maskText } from 'maskio';
const result = maskText('1234567890', 'all');
console.log(result); // 输出:**********
银行卡 bankCard
ts
import { maskText } from 'maskio';
const result = maskText('1234567890123456', 'all');
console.log(result); // 输出:************3456
证件号 idCard
ts
import { maskText } from 'maskio';
const result = maskText('360429202507200125', 'idCard');
console.log(result); // 输出:360***********012*
姓名 userName
ts
import { maskText } from 'maskio';
const result = maskText('张三', 'userName');
console.log(result); // 输出:*三
金额 amount
ts
import { maskText } from 'maskio';
const result = maskText('1000.00', 'amount');
console.log(result); // 输出:*******
验证码 verification
ts
import { maskText } from 'maskio';
const result = maskText('123456', 'verification');
console.log(result); // 输出:******
地址掩码 address
ts
import { maskText } from 'maskio';
const result = maskText('北京市朝阳区', 'address');
console.log(result); //输出: ******
IP 地址 ip
ts
import { maskText } from 'maskio';
const result = maskText('192.168.1.1', 'ip');
console.log(result); // 输出:192.168.1.***
URL 掩码 url
ts
import { maskText } from 'maskio';
const result = maskText('https://www.example.com/path?query=123', 'url');
console.log(result); // 输出:https://www.example.com/***
车牌号 licensePlate
ts
import { maskText } from 'maskio';
const result = maskText('京A12345', 'licensePlate');
console.log(result); // 输出:京A*****
电话号码 phone
ts
const phoneTestCases = [
{ input: '13812345678', title: '大陆手机号:' },
{ input: '96123456', title: '香港手机号:' },
{ input: '66812345', title: '澳门手机号:' },
{ input: '091234567', title: '台湾手机号:' },
{ input: '1234567890', title: '其他手机号:' },
];
phoneTestCases.forEach(({ input, title }) => {
console.log(title, maskText(input, 'phone'));
});
// 输出:
// 大陆手机号:138******78
// 香港手机号:96****56
// 澳门手机号:66****45
// 台湾手机号:09*****67
// 其他手机号:12******90
固定电话号码 landline
ts
const landlineTestCases = [
{ input: '010-12345678', title: '默认固定电话:' },
{ input: '1234567890', title: '其他:' },
];
landlineTestCases.forEach(({ input, title }) => {
console.log(title, maskText(input, 'landline'));
});
// 输出:
// 默认固定电话:010-******78
// 其他:********90
邮箱 email
ts
const emailTestCases = [
{ input: 'example@gmail.com', title: '前缀大于3位:' },
{ input: 'ab@gmail.com', title: '前缀小于3位:' },
{ input: 'abc@gmail.com', title: '前缀等于3位:' },
{ input: 'gmail.com', title: '匹配不上:' },
];
emailTestCases.forEach(({ input, title }) => {
console.log(title, maskText(input, 'email'));
});
// 输出:
// 前缀大于3位:exam***@gmail.com
// 前缀小于3位:ab***@gmail.com
// 前缀等于3位:***@gmail.com
// 匹配不上:*********
无效规则
ts
console.log(maskText('123456', 'invalidConfig'));
// 输出:123456
兜底掩码配置
ts
const testRules: Record<string, [string, string]> = {
'^[a-z]+$': ['^(.*)$', '{{#$1}}'],
};
const defaultRulesTestCases = [
{
input: '123456',
title: '无效规则配置:',
config: 'invalidConfig',
},
{
input: '123456',
title: '未匹配到规则:',
config: testRules,
},
];
defaultRulesTestCases.forEach(({ input, title, config }) => {
console.log(title, maskText(input, config, 'all'));
});
// 输出:
// 无效规则配置:******
// 未匹配到规则:******