Validate decimal numbers in JavaScript – IsNumeric()

What’s the cleanest, most effective way to validate decimal numbers in JavaScript?

Bonus points for:

  1. Clarity. Solution should be clean and simple.
  2. Cross-platform.

Test cases:


@Joel’s answer is pretty close, but it will fail in the following cases:

Some time ago I had to implement an IsNumeric function, to find out if a variable contained a numeric value, regardless of its type, it could be a String containing a numeric value (I had to consider also exponential notation, etc.), a Number object, virtually anything could be passed to that function, I couldn’t make any type assumptions, taking care of type coercion (eg. +true == 1; but true shouldn’t be considered as "numeric").

I think is worth sharing this set of +30 unit tests (old link) made to numerous function implementations, and also share the one that passes all my tests:

P.S. isNaN & isFinite have a confusing behavior due to forced conversion to number. In ES6, Number.isNaN & Number.isFinite would fix these issues. Keep that in mind when using them.


Update :
Here’s how jQuery does it now (2.2-stable) :

Update :
Angular 4.3 :