mask-any-number
Version:
Apply flexible numeric masks to any string. Perfect for phone numbers, documents, and custom input formatting.
128 lines (90 loc) β’ 3.61 kB
Markdown
A lightweight, flexible number-masking library β supports multiple mask patterns and automatically picks the best fit based on the input length.




```sh
npm install mask-any-number
```
or
```sh
yarn add mask-any-number
```
```js
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"
```
```js
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"
// 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 |
```javascript
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.
```sh
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.
```sh
npm run build
npm link
npm link mask-any-number
```
β οΈ After the initial link, you only need to run npm run build when updating the library.
<img src="https://avatars.githubusercontent.com/u/28657322?v=4" width="40" alt="Gabriel" /> Gabriel [GitHub](https://github.com/gabrielrfmendes)
MIT Β© 2025