Skip to content

字符串

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'));
});

// 输出:
// 无效规则配置:******
// 未匹配到规则:******