So I just spent 5 hours troubleshooting a problem which turned out to be due not only to the old unreliable ISNUMERIC but it looks like my problem only appears
ISNUMERIC
Following the .NET CLR route, you could go with a regular expression, particularly if you expect a certain range of numbers.
SQL 2005 and Regular Expressions