Bank Card Validation
Validate Iranian bank card numbers and extract card information including bank name.
Available Functions
verifyCardNumber - Validate card number checksum
getBankNameFromCardNumber - Get bank name from card number
extractCardNumbers - Extract card numbers from text
Basic Usage
import { verifyCardNumber , getBankNameFromCardNumber , extractCardNumbers } from "@persian-tools/persian-tools" ;
// Validate card number
console . log ( verifyCardNumber ( "6037701689095443" ));
// Output: true
// Get bank name
console . log ( getBankNameFromCardNumber ( "6037701689095443" ));
// Output: "بانک کشاورزی"
// Extract from text
console . log ( extractCardNumbers ( "کارت من: 6037-7016-8909-5443" ));
// Output: ['6037701689095443']
API Reference
verifyCardNumber
Validate a bank card number using the Luhn algorithm.
16-digit bank card number
true if valid, false otherwise
verifyCardNumber ( "6037701689095443" ); // true
verifyCardNumber ( "1234567890123456" ); // false
getBankNameFromCardNumber
Identify the bank from a card number.
Valid 16-digit bank card number
Bank name in Persian, or empty string if not found
getBankNameFromCardNumber ( "6037701689095443" ); // "بانک کشاورزی"
getBankNameFromCardNumber ( "6219861034529007" ); // "بانک سامان"
Extract all card numbers from a text string.
Text containing card numbers
Array of extracted card numbers (cleaned, digits only)
extractCardNumbers ( "کارت ۱: 6037-7016-8909-5443 و کارت ۲: 6219861034529007" );
// ['6037701689095443', '6219861034529007']
Examples
import { verifyCardNumber , getBankNameFromCardNumber } from "@persian-tools/persian-tools" ;
interface CardValidation {
isValid : boolean ;
bankName ?: string ;
error ?: string ;
}
const validatePaymentCard = ( cardNumber : string ) : CardValidation => {
// Remove spaces and dashes
const cleaned = cardNumber . replace ( / [ \s- ] / g , "" );
if ( cleaned . length !== 16 ) {
return {
isValid: false ,
error: "شماره کارت باید ۱۶ رقم باشد" ,
};
}
if ( ! verifyCardNumber ( cleaned )) {
return {
isValid: false ,
error: "شماره کارت نامعتبر است" ,
};
}
const bankName = getBankNameFromCardNumber ( cleaned );
return {
isValid: true ,
bankName: bankName || "نامشخص" ,
};
};
console . log ( validatePaymentCard ( "6037-7016-8909-5443" ));
// {
// isValid: true,
// bankName: 'بانک کشاورزی'
// }
import { getBankNameFromCardNumber } from "@persian-tools/persian-tools" ;
const formatCardDisplay = ( cardNumber : string ) : string => {
const bankName = getBankNameFromCardNumber ( cardNumber );
const masked = cardNumber . slice ( 0 , 6 ) + "******" + cardNumber . slice ( - 4 );
return ` ${ bankName } - ${ masked } ` ;
};
console . log ( formatCardDisplay ( "6037701689095443" ));
// "بانک کشاورزی - 603770******5443"
import { extractCardNumbers , verifyCardNumber } from "@persian-tools/persian-tools" ;
const processPaymentMessage = ( message : string ) => {
const cards = extractCardNumbers ( message );
const validCards = cards . filter (( card ) => verifyCardNumber ( card ));
return validCards . map (( card ) => ({
number: card ,
bank: getBankNameFromCardNumber ( card ),
masked: card . slice ( 0 , 6 ) + "******" + card . slice ( - 4 ),
}));
};
const sms = `
لطفا مبلغ را به کارت 6037-7016-8909-5443 واریز کنید.
یا به کارت 6219861034529007
` ;
console . log ( processPaymentMessage ( sms ));
// [
// { number: '6037701689095443', bank: 'بانک کشاورزی', masked: '603770******5443' },
// { number: '6219861034529007', bank: 'بانک سامان', masked: '621986******9007' }
// ]
Multi-Card Support
import { verifyCardNumber , getBankNameFromCardNumber } from "@persian-tools/persian-tools" ;
interface SavedCard {
id : string ;
number : string ;
bank : string ;
isPrimary : boolean ;
}
const addCardToWallet = ( cardNumber : string , existingCards : SavedCard []) : SavedCard [] => {
if ( ! verifyCardNumber ( cardNumber )) {
throw new Error ( "شماره کارت نامعتبر است" );
}
const newCard : SavedCard = {
id: Date . now (). toString (),
number: cardNumber ,
bank: getBankNameFromCardNumber ( cardNumber ),
isPrimary: existingCards . length === 0 ,
};
return [ ... existingCards , newCard ];
};
Use Cases
Validate cards during checkout: const processPayment = ( cardNumber : string ) => {
if ( ! verifyCardNumber ( cardNumber )) {
throw new Error ( 'کارت نامعتبر است' );
}
const bank = getBankNameFromCardNumber ( cardNumber );
// Process payment with bank
};
Store and manage multiple cards: ```typescript const cards = userCards.filter(card => verifyCardNumber(card.number) ); </Accordion>
<Accordion title="Fraud Detection" icon="shield-halved">
Validate card numbers before processing:
```typescript
const checkFraud = (cardNumber: string) => {
if (!verifyCardNumber(cardNumber)) {
logSecurityEvent('Invalid card number attempt');
return false;
}
return true;
};
Supported Banks
The function recognizes cards from all major Iranian banks including:
بانک ملی ایران
بانک سپه
بانک صادرات ایران
بانک کشاورزی
بانک مسکن
بانک پست بانک ایران
بانک اقتصاد نوین
بانک پارسیان
بانک سامان
And 40+ more banks
Iranian bank cards use a 16-digit format validated with the Luhn algorithm:
First 6 digits: Bank identification number (BIN)
Next 9 digits: Account identifier
Last digit: Check digit
Type Definition
function verifyCardNumber ( cardNumber : string ) : boolean ;
function getBankNameFromCardNumber ( cardNumber : string ) : string ;
function extractCardNumbers ( text : string ) : string [];
Always validate card numbers on the server side for security, even if validated on the client.