A lightweight, flexible number-masking library — supports multiple mask patterns and automatically picks the best fit based on the input length.
npm install mask-any-number
or
yarn add mask-any-number
import { maskNumber, countries } from 'mask-any-number';
// Germany 🇩🇪
maskNumber('493012345678', countries.find(country => country.iso2 === 'DE').masks);
// "+49 30 1234 5678"
// Brazil 🇧🇷
maskNumber('5511998765432', countries.find(country => country.iso2 === 'BR').masks);
// "+55 11 99876 5432"
// US 🇺🇸
maskNumber('1234567890', countries.find(country => country.iso2 === 'US').masks);
// "(123) 456-7890"
import { maskNumber } from 'mask-any-number';
// Basic usage
maskNumber('1234567890', ['000-000-0000']); // "123-456-7890"
// Multiple masks, chooses first that fits
maskNumber('12345', ['000-000', '00000']); // "12345"
maskNumber('123456', ['000-000', '00000']); // "123-456"
### Phone Numbers
// US: (XXX) XXX-XXXX
maskNumber('1234567890', ['(000) 000-0000']); // "(123) 456-7890"
// Europe (DE): +49 XX XXXX XXXX
maskNumber('493012345678', ['+49 00 0000 0000']); // "+49 30 1234 5678"
// China: +86 10 1234 5678
maskNumber('861012345678', ['+86 00 0000 0000']); // "+86 10 1234 5678"
Parameter | Type | Description |
---|---|---|
value |
string |
Input numeric string to mask |
masks |
string[] |
Array of mask patterns using 0 as digit placeholder |
Return: string
— formatted number according to the first mask that fits.
Type | Input | Mask | Output |
---|---|---|---|
US Phone | 1234567890 | (000) 000-0000 | (123) 456-7890 |
EU Phone | 493012345678 | +49 00 0000 0000 | +49 30 1234 5678 |
CN Phone | 861012345678 | +86 00 0000 0000 | +86 10 1234 5678 |
const examples = [
{ value: '1234567890', masks: ['000-000-0000'] },
{ value: '31122025', masks: ['00/00/0000'] },
];
examples.forEach(({ value, masks }) => {
console.log(maskNumber(value, masks));
});
Use multiple masks to handle variable-length numbers.
Keep 0 as the digit placeholder; all other characters are treated as literals.
Ideal for phone numbers, dates, IDs, and other numeric inputs.
npm run build
npm link
Use multiple masks to handle variable-length numbers.
Keep 0 as the digit placeholder; all other characters are treated as literals.
Ideal for phone numbers, dates, IDs, and other numeric inputs.
npm run build
npm link
npm link mask-any-number
Gabriel GitHub
MIT © 2025