Link to home
Start Free TrialLog in
Avatar of ervinloh
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?
Avatar of robbert
robbert

Tinkering :-)

(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
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
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
If VarType(var_qty) = vbInteger Then
   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.charAt(x),0)==-1)
  {
  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("theinputvalue")
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
Avatar of Ravi97
Ravi97

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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? :-)
Avatar of ervinloh

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.