Skip to content

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: ****** */