I\'ve just experienced a behaviour that defies any logic and could potentially lead to serious issues and was wondering if it was a bug or if the behaviour was itend
You can use regular expressions to find out if there are any non numeric characters in a given form field:
reFind( "[^\d-]", "1 2")
That will match any character that is not a number, not a -
If you want to check only positive numbers, you can use
reFind( "[^\d]", "1 2")
If this returns true
, you do not have an integer.
This is a variation on that theme from the other question. See this code (or run it on cflive.net):
<cfscript>
s = "1 2";
i = int(s);
v = isValid("numeric", s);
d = createOdbcDate(s);
writeDump([s,i,v,d]);
</cfscript>
s
converts to 41276
when calling int()
, and when using it as an input for createOdbcDate()
, we get:
January, 02 2013 00:00:00 +0000
So "1 2"
is being interpreted as "m d"
, with an implied year of the current year.
Which is utterly stupid. But there you go.