String
Provides masking operations for string
and number
data types with built-in common preset rules and customizable configurations.
All Masking all
ts
import { maskText } from 'maskio';
const result = maskText('1234567890', 'all');
console.log(result); // Output: **********
Bank Card bankCard
ts
import { maskText } from 'maskio';
const result = maskText('1234567890123456', 'bankCard');
console.log(result); // Output: ************3456
ID Card idCard
ts
import { maskText } from 'maskio';
const result = maskText('360429202507200125', 'idCard');
console.log(result); // Output: 360***********012*
Name userName
ts
import { maskText } from 'maskio';
const result = maskText('张三', 'userName');
console.log(result); // Output: *三
Monetary Amount amount
ts
import { maskText } from 'maskio';
const result = maskText('1000.00', 'amount');
console.log(result); // Output: *******
Verification Code verification
ts
import { maskText } from 'maskio';
const result = maskText('123456', 'verification');
console.log(result); // Output: ******
Address address
ts
import { maskText } from 'maskio';
const result = maskText('北京市朝阳区', 'address');
console.log(result); // Output: ******
IP Address ip
ts
import { maskText } from 'maskio';
const result = maskText('192.168.1.1', 'ip');
console.log(result); // Output: 192.168.1.***
URL url
ts
import { maskText } from 'maskio';
const result = maskText('https://www.example.com/path?query=123', 'url');
console.log(result); // Output: https://www.example.com/***
License Plate licensePlate
ts
import { maskText } from 'maskio';
const result = maskText('京A12345', 'licensePlate');
console.log(result); // Output: 京A*****
Phone Numbers phone
ts
const phoneTestCases = [
{ input: '13812345678', title: 'Mainland China: ' },
{ input: '96123456', title: 'Hong Kong: ' },
{ input: '66812345', title: 'Macau: ' },
{ input: '091234567', title: 'Taiwan: ' },
{ input: '1234567890', title: 'Others: ' },
];
phoneTestCases.forEach(({ input, title }) => {
console.log(title, maskText(input, 'phone'));
});
/* Output:
Mainland China: 138******78
Hong Kong: 96****56
Macau: 66****45
Taiwan: 09*****67
Others: 12******90 */
Landline Numbers landline
ts
const landlineTestCases = [
{ input: '010-12345678', title: 'Standard format: ' },
{ input: '1234567890', title: 'Other formats: ' },
];
landlineTestCases.forEach(({ input, title }) => {
console.log(title, maskText(input, 'landline'));
});
/* Output:
Standard format: 010-******78
Other formats: ********90 */
Email email
ts
const emailTestCases = [
{ input: 'example@gmail.com', title: 'Prefix >3 chars: ' },
{ input: 'ab@gmail.com', title: 'Prefix <3 chars: ' },
{ input: 'abc@gmail.com', title: 'Prefix =3 chars: ' },
{ input: 'gmail.com', title: 'No match: ' },
];
emailTestCases.forEach(({ input, title }) => {
console.log(title, maskText(input, 'email'));
});
/* Output:
Prefix >3 chars: exam***@gmail.com
Prefix <3 chars: ab***@gmail.com
Prefix =3 chars: ***@gmail.com
No match: ********* */
Invalid Rules
ts
console.log(maskText('123456', 'invalidConfig'));
// Output: 123456
Fallback Configuration
ts
const testRules: Record<string, [string, string]> = {
'^[a-z]+$': ['^(.*)$', '{{#$1}}'],
};
const defaultRulesTestCases = [
{
input: '123456',
title: 'Invalid config: ',
config: 'invalidConfig',
},
{
input: '123456',
title: 'No rule matched: ',
config: testRules,
},
];
defaultRulesTestCases.forEach(({ input, title, config }) => {
console.log(title, maskText(input, config, 'all'));
});
/* Output:
Invalid config: ******
No rule matched: ****** */