ervinloh
asked on
integer validation
Does anyone knows how to validate whether a string is of type integer of not?
I have a form which collects a part quantity. This quantity must be of type integer. As such, I cannot use the IsNumeric function.
Any ideas?
I have a form which collects a part quantity. This quantity must be of type integer. As such, I cannot use the IsNumeric function.
Any ideas?
Or, just more tinkering :-)
myVar = "1.23"
strRef = "0123456789"
blnInteger = True
For i = 1 To Len(myVar)
If Not Instr(1, strRef, Mid(CStr(myVar),1)) > 0 Then
blnInteger = False
End If
Next
myVar = "1.23"
strRef = "0123456789"
blnInteger = True
For i = 1 To Len(myVar)
If Not Instr(1, strRef, Mid(CStr(myVar),1)) > 0 Then
blnInteger = False
End If
Next
To be perfect :-)
myVar = "1.23"
myVar = CStr(myVar)
strRef = "0123456789"
blnInteger = True
For i = 1 To Len(myVar)
If Not Instr(1, strRef, Mid(myVar, 1)) > 0 Then
blnInteger = False
End If
Next
myVar = "1.23"
myVar = CStr(myVar)
strRef = "0123456789"
blnInteger = True
For i = 1 To Len(myVar)
If Not Instr(1, strRef, Mid(myVar, 1)) > 0 Then
blnInteger = False
End If
Next
If VarType(var_qty) = vbInteger Then
Response.Write "string is an integer"
Else
Response.Write "not an integer"
End If
Response.Write "string is an integer"
Else
Response.Write "not an integer"
End If
here is a javascript solution:
//######################## ########## ########## ########## ########## ####
function NumericsOnly(varvalue, someObject)
{
var valid="01234567890";
for(x=0;x < varvalue.length; ++x)
{
if (valid.indexOf(varvalue.ch arAt(x),0) ==-1)
{
if(someObject)
{
alert("Please enter numeric data only.");
someObject.focus();
}
return(false);
}
}
return(true);
}
//########################
function NumericsOnly(varvalue, someObject)
{
var valid="01234567890";
for(x=0;x < varvalue.length; ++x)
{
if (valid.indexOf(varvalue.ch
{
if(someObject)
{
alert("Please enter numeric data only.");
someObject.focus();
}
return(false);
}
}
return(true);
}
Or just simply like this :
Dim iVal
Dim Tmp
On Error Resume Next
Tmp = Request.Form("theinputvalu e")
If Not IsNumeric(Tmp) Then
Response.Write "Not Numeric"
Response.End
End If
If Val(Tmp) < -32768 Or Val(Tmp) > 32767 Then
Response.Write "Not an Integer"
Response.End
End If
iVal = CInt(Tmp)
Response.Write "Whoopee - it is an integer of value " & iVal
Dim iVal
Dim Tmp
On Error Resume Next
Tmp = Request.Form("theinputvalu
If Not IsNumeric(Tmp) Then
Response.Write "Not Numeric"
Response.End
End If
If Val(Tmp) < -32768 Or Val(Tmp) > 32767 Then
Response.Write "Not an Integer"
Response.End
End If
iVal = CInt(Tmp)
Response.Write "Whoopee - it is an integer of value " & iVal
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Simply?
VBScript:
<%
...
Set regEx = New RegExp
regEx.Pattern = "^(\-|\+)?\d+(\.\d*)?$" ' for float numbers
' regEx.Pattern = "^(\-|\+)?\d+$" ' for integer
' regEx.Pattern = "^\d+$" ' for non negative, etc.
regEx.IgnoreCase = True
If regEx.Test(val) Then
Response.Write "Number"
Else
Response.Write "Not a number"
Else
%>
JavaScript:
<%
...
pattern = /^(\-|\+)?\d+(\.\d*)?$/;
// pattern = /^(\-|\+)?\d+$/;
if(pattern.test(val)) ...
%>
It's nice, isn't it? :-)
VBScript:
<%
...
Set regEx = New RegExp
regEx.Pattern = "^(\-|\+)?\d+(\.\d*)?$" ' for float numbers
' regEx.Pattern = "^(\-|\+)?\d+$" ' for integer
' regEx.Pattern = "^\d+$" ' for non negative, etc.
regEx.IgnoreCase = True
If regEx.Test(val) Then
Response.Write "Number"
Else
Response.Write "Not a number"
Else
%>
JavaScript:
<%
...
pattern = /^(\-|\+)?\d+(\.\d*)?$/;
// pattern = /^(\-|\+)?\d+$/;
if(pattern.test(val)) ...
%>
It's nice, isn't it? :-)
ASKER
Thank you for all the responses.
To: hobster
If VarType(var_qty) = vbInteger Then
Response.Write "string is an integer"
Else
Response.Write "not an integer"
End If
does not work. Texts read from a textbox will be always recognized as string. As such, it won't work.
To: hobster
If VarType(var_qty) = vbInteger Then
Response.Write "string is an integer"
Else
Response.Write "not an integer"
End If
does not work. Texts read from a textbox will be always recognized as string. As such, it won't work.
(TypeOf(myVar) should get it right, but generates an error.)
On Error Resume Next
If CInt(myVar) = CDbl(myVar) Then
blnInteger = True
myVar = CInt(myVar)
End If
If Err.Number <> 0 Then
blnInteger = False
End If
On Error GoTo 0
If blnInteger Then
'save myVar as Integer
End If