Here is some code that will likely work (uses the Luhn Algorithm):
-(BOOL) validateCardNumber:(NSString *)cardNumber
{
const char *str = [cardNumber UTF8String];
int n, i, alternate, sum;
n = strlen(str);
if ( n < 13 || n > 19 )
return NO;
for ( alternate = 0, sum = 0, i = n-1; i>-1; –i) {
if ( !isdigit(str[i]))
return NO;
n = str[i] – ‘0′;
if ( alternate ) {
n*=2;
if ( n > 9 )
n = ( n % 10 ) + 1;
}
alternate = !alternate;
sum += n;
}
return ( sum % 10 == 0 );
}
Credit to Donald Bellenger for this method.