I have fields to test and make sure they only accept integers
. There is few functions but I wasn't sure which one is the best. First I tried isValid("integer",value)
but I have discovered that "1,5" will be accepted as an integer. So then I tried isNumeric(value)
but this will accept values like 1.5
. I'm wondering what should be the best way to check for integers? Maybe two combine these two functions like:
<cfif isValid("integer",value) AND isNumeric(value)>
Or there is better way to do this?
Here's the isInteger UDF that I prefer using:
Here are some tests to determine how it functions and compares against the various built-in functions.
https://gist.github.com/JamoCA/fab1104a3a9074434ff336630dd5ffd1
View the results using TryCF.com
https://trycf.com/gist/fab1104a3a9074434ff336630dd5ffd1
You could try this:
Note People often include commas in large numbers such as 1,000,000.
isNumeric
will return false for that string, as will the refind function in the other answers.cfscript
cftag
isSimpleValue
making sure the input is a primitive type (by CF means), because all numbers are considered simple values in CF (string conversion)reFind
regular expression checking digits-only (with or without sign), minimum of one digit, maximum of ten digits (implicit call oftoString
here)If you don't need the range check for 4 Byte integers, @DanBracuk posted an answer with a function that performs around 5-6 times faster than this one.