It is a very good post. However, it does not check for the valid range of integer number. For example: 3147483647 will result in true, however, according to sql server, this is not a valid integer because it exceeds the range of integers. ie -2,147,483,648 through 2,147,483,647.
It also fails to capture comma separated integers, eg 1,234. This is a valid integer, but the UDF returns false.