Friday, November 30, 2018

validation - (Built-in) way in JavaScript to check if a string is a valid number



I'm hoping there's something in the same conceptual space as the old VB6 IsNumeric() function?


Answer



To check if a variable (including a string) is a number, check if it is not a number:




This works regardless of whether the variable content is a string or number.



isNaN(num)         // returns true if the variable does NOT contain a valid number


Examples



isNaN(123)         // false
isNaN('123') // false

isNaN('1e10000') // false (This translates to Infinity, which is a number)
isNaN('foo') // true
isNaN('10px') // true


Of course, you can negate this if you need to. For example, to implement the IsNumeric example you gave:



function isNumeric(num){
return !isNaN(num)
}



To convert a string containing a number into a number:



Only works if the string only contains numeric characters, else it returns NaN.



+num               // returns the numeric value of the string, or NaN 
// if the string isn't purely numeric characters



Examples



+'12'              // 12
+'12.' // 12
+'12..' // Nan
+'.12' // 0.12
+'..12' // Nan
+'foo' // NaN
+'12px' // NaN



To convert a string loosely to a number



Useful for converting '12px' to 12, for example:



parseInt(num)      // extracts a numeric value from the 
// start of the string, or NaN.


Examples




parseInt('12')     // 12
parseInt('aaa') // NaN
parseInt('12px') // 12
parseInt('foo2') // NaN These last two may be different
parseInt('12a5') // 12 from what you expected to see.


Floats




Bear in mind that, unlike +num, parseInt (as the name suggests) will convert a float into an integer by chopping off everything following the decimal point (if you want to use parseInt() because of this behaviour, you're probably better off using another method instead):



+'12.345'          // 12.345
parseInt(12.345) // 12
parseInt('12.345') // 12


Empty strings



Empty strings may be a little counter-intuitive. +num converts empty strings to zero, and isNaN() assumes the same:




+''                // 0
isNaN('') // false


But parseInt() does not agree:



parseInt('')       // NaN

No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...