[eluser]Pygon[/eluser]
The regex I gave is not superfluos[sic] as you put it. In the context as I have put it, with the intention of creating standards, it is not superfluous as it does what is intended. Maybe you feel I should write out an entire library, but I didn't believe it was necessary. Superfluous would be your replacement of letters and and symbols as well as numbers, except "- ", the addition of yet another regex to verify the user input, and yet another regex to strip all of the unnecessary jumble yet again before submission to most billing systems--thus the true meaning of being "redundant".
You are right about "what the original poster asked for..." -- I'm glad the intention of the forum is to obscurely answer questions without providing any insight into other, more useful ways of doing something (which, by the way, I did in my original post with function 2 while increasing the speed of the function and working for 14-16 digit cards).
Atleast you did get one thing right, I didn't write my function to handle AMEX cards, then again, I'm not trying to write a fully functional for every situation system.
FYI, your function is 100% slower even when I correct mine for an strlen of the stripped input.

As fun as point, counter-point is, I think coolfactors question has been answered.