24 lines
699 B
TypeScript
24 lines
699 B
TypeScript
const persianDigits = '۰۱۲۳۴۵۶۷۸۹'
|
||
const arabicDigits = '٠١٢٣٤٥٦٧٨٩'
|
||
|
||
export function normalizeCard(value: string): string {
|
||
return value
|
||
.replace(/[۰-۹]/g, (digit) => String(persianDigits.indexOf(digit)))
|
||
.replace(/[٠-٩]/g, (digit) => String(arabicDigits.indexOf(digit)))
|
||
.replace(/[\s-]/g, '')
|
||
}
|
||
|
||
export function validCard(value: string): boolean {
|
||
return /^\d{16}$/.test(value)
|
||
}
|
||
|
||
export function formatCard(value: string): string {
|
||
const digits = normalizeCard(value).replace(/\D/g, '').slice(0, 16)
|
||
|
||
return digits.replace(/(\d{4})(?=\d)/g, '$1 ')
|
||
}
|
||
|
||
export function formatIBAN(value: string): string {
|
||
return value.replace(/(.{4})(?=.)/g, '$1 ')
|
||
}
|