Note that ISBN can end with an X since they use a checksum that generates 11 values, and uses 0-9 + X as the values for that. (X being ROMAN 10, I suppose?)
Of course, it's not hard to replace isdigit with "isisbn", and produce a function chat checks for "isdigit", and if it isn't, checks for 'X'. Just make sure you make it uppercase first (or allow lowercase, but if you are going to "massage" the string in the first place, you may just as well convert it too).
--
Mats