预设掩码
预设掩码。请从 tinyval-mask/presets 导入 —— 这样只会打包用到的掩码。所有掩码也可以通过 tinyval-mask 中的 masks 对象使用。
ts
import { phone, card, money } from 'tinyval-mask/presets'; // tree-shakeable
import { masks } from 'tinyval-mask'; // masks.phone(), masks.card()…电话
| 国家 | 掩码 | 格式 |
|---|---|---|
| 🇷🇺 俄罗斯 | phone(), phone('ru') | +7 (123) 456-78-90 |
| 🇰🇿 哈萨克斯坦 | phone('kz') | +7 (123) 456-78-90 |
| 🇧🇾 白俄罗斯 | phone('by') | +375 (12) 345-67-89 |
| 🇺🇦 乌克兰 | phone('ua') | +380 (12) 345-67-89 |
| 🇺🇿 乌兹别克斯坦 | phone('uz') | +998 (12) 345-67-89 |
| 🇰🇬 吉尔吉斯斯坦 | phone('kg') | +996 (123) 456-789 |
| 🇹🇯 塔吉克斯坦 | phone('tj') | +992 (12) 345-67-89 |
| 🇹🇲 土库曼斯坦 | phone('tm') | +993 (12) 34-56-78 |
| 🇦🇲 亚美尼亚 | phone('am') | +374 (12) 345-678 |
| 🇬🇪 格鲁吉亚 | phone('ge') | +995 (123) 45-67-89 |
| 🇦🇿 阿塞拜疆 | phone('az') | +994 (12) 345-67-89 |
| 🇲🇩 摩尔多瓦 | phone('md') | +373 (12) 345-678 |
| 🇱🇻 拉脱维亚 | phone('lv') | +371 1234-5678 |
| 🇱🇹 立陶宛 | phone('lt') | +370 (123) 45678 |
| 🇪🇪 爱沙尼亚 | phone('ee') | +372 123 4567 |
| 🇺🇸 美国 | phone('us') | +1 (123) 456-7890 |
| 🇨🇦 加拿大 | phone('ca') | +1 (123) 456-7890 |
| 🇬🇧 英国 | phone('gb') | +44 1234 567890 |
| 🇩🇪 德国 | phone('de') | +49 123 4567890 |
| 🇫🇷 法国 | phone('fr') | +33 1 23 45 67 89 |
| 🇮🇹 意大利 | phone('it') | +39 123 456 7890 |
| 🇪🇸 西班牙 | phone('es') | +34 123 45 67 89 |
| 🇵🇱 波兰 | phone('pl') | +48 123 456 789 |
| 🇹🇷 土耳其 | phone('tr') | +90 (123) 456 78 90 |
| 🇨🇳 中国 | phone('cn') | +86 123 4567 8901 |
| 🇮🇳 印度 | phone('in') | +91 12345 67890 |
| 🇮🇱 以色列 | phone('il') | +972 12-345-6789 |
| 🇦🇪 阿拉伯联合酋长国 | phone('ae') | +971 12 345 6789 |
去掉掩码后为包含国家代码的全部数字:+375 (29) 123-45-67 → 375291234567。对于俄罗斯和哈萨克斯坦,开头的 7 或 8 被视为国家代码:89991234567 → +7 (999) 123-45-67。
如果事先不知道国家,请使用 phoneAuto:根据用户输入的区号选择掩码,并提供国旗和国家名称用于界面显示。
银行卡
| 掩码 | 示例 |
|---|---|
card() | 4276 1234 5678 9012;Amex 为 3782 822463 10005;最多 19 位 |
cardExpiry() | 12/26 |
cvc() | 123 或 1234 |
cardBrand(number) | 'visa'、'mastercard'、'mir'、'amex'、'unionpay'、'unknown' —— 例如用于显示图标 |
日期和时间
| 掩码 | 示例 |
|---|---|
date()、date('dd.mm.yyyy') | 02.10.2026 |
date('yyyy-mm-dd')、date('mm/dd/yyyy')、date('dd/mm/yyyy') | 2026-10-02 |
time()、time(true) | 09:30、09:30:15 |
datetime() | 02.10.2026 15:30 |
无法输入不可能的数字:32 日、13 月、25 时、60 分、00.00。cardExpiry 的月份同样如此。整个日期是否存在(2 月 31 日)由校验负责:使用 tinyval 的 coerce.date。
俄罗斯证件与银行信息
| 掩码 | 示例 |
|---|---|
inn() | 7707083893 或 500100732259(10 或 12 位) |
snils() | 123-456-789 01 |
passport() | 45 10 123456 |
ogrn() | 13 或 15 位 |
bik() | 044525225 |
kpp() | 7743AB001 |
account() | 40702 810 9 0000 0000001 |
postcode() | 101000 |
carPlate() | А 123 ВС 77 —— 外形相同的拉丁字母会替换为西里尔字母 |
数字
| 掩码 | 示例 |
|---|---|
money({ currency: '₽' }) | 1 500,50 ₽ —— 去掉掩码后为 1500.50 |
percent() | 15 % |
它们接受 numberMask 的所有选项。
其他
| 掩码 | 示例 |
|---|---|
mac() | AA:BB:CC:DD:EE:FF |
hexColor() | #FF8800 |
valid 检查什么
isValid 和 valid 属性表示值已填写且正确。isComplete 和 complete 只表示已填写。
| 掩码 | valid |
|---|---|
date、datetime | 日期存在:没有 31.02,29.02 只在闰年存在 |
cardExpiry | 月份为 01–12,且未过期 |
card | 校验位(Luhn 算法) |
inn、snils、ogrn | 校验和 |
phoneAuto | 号码已按识别出的国家掩码填写完整 |
| 其他 | 与 complete 相同 |
ts
isComplete('31.02.2026', date()); // true —— 数字都已填写
isValid('31.02.2026', date()); // false —— 不存在这个日期另请参阅
- 模板:没有合适的预设掩码时自定义掩码