前台代码:   

  function isNum() {
            if(event.keyCode<48 || event.keyCode> 57){
                event.keyCode = 0;
            }
        }

<!--onkeypress是在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别-->
        <asp:TextBox ID="TextBox1" runat="server" onkeypress="isNum();" ></asp:TextBox>
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

 

后台代码:

 

 protected void Button1_Click(object sender, EventArgs e)
    {
        
try
        {
            
double num=Convert.ToDouble(TextBox1.Text);
        }
        
catch (Exception)
        {
            Page.ClientScript.RegisterStartupScript(
this.GetType(),"alertNum""<script>alert('请输入正确的数字!');</script>");
            TextBox1.Text 
= "";
            Page.ClientScript.RegisterStartupScript(
this.GetType(),"focus""<script>document.forms[0]['TextBox1'].focus();</script>");
        }
    }

 

第一种:
     try catch方法
     例:
     try
     {
       Convert.ToInt32("123"):
       Console.Write("是数字");
     }
     catch(Exception ex)
     {
       Console.Write("非数字");
     }
     注:如果有很多字符串要求判断,此方法需要大量的try catch 以及finally来处理后续的程序.不建议使用此方法。

第二种:
     正则表达式方法
     例:
     //引用正则表达式类
     using   System.Text.RegularExpressions; 
     Regex   reg=new   Regex("^[0-9]+$"); 
     Match   ma=reg.Match(text); 
     if(ma.Success) 
     { 
      //是数字 
     } 
     else 
     { 
     //不是数字 
     }
     注:此方法快捷,但不太容易掌握,尤其是正则表达式公式,如果有兴趣的朋友可以好好研究,这东西很好用的,建议使用。

第三种:
     Double.TryParse方法
     例:
     bool isNum=System.Double.TryParse("所要判断的字符串"  ,System.Globalization.NumberStyles.Integer,null,out );
     注:此方法快捷,方便,很容易被掌握,但是参数很多,有兴趣的朋友可以研究一下,建议使用。
 
NumberStyles枚举:

Integer 指示使用 AllowLeadingWhite、AllowTrailingWhite 和 AllowLeadingSign 样式。这是复合数字样式。

AllowLeadingWhite 指示在分析期间必须忽略前导空白字符。有效的空白字符具有 Unicode 值 U+0009、U+000A、U+000B、U+000C、U+000D 和 U+0020。

AllowTrailingWhite 指示分析期间必须忽略结尾空白字符。有效的空白字符具有 Unicode 值 U+0009、U+000A、U+000B、U+000C、U+000D 和 U+0020。

AllowLeadingSign 指示数字字符串可以具有前导符号。有效的前导符号字符是由 NumberFormatInfoPositiveSignNegativeSign 属性确定的。

Unicode 值

U+0009-->\t 水平制表符

U+000A-->\n  换行

U+000B-->\t 垂直制表符

U+000C-->\f 换页

U+000D--> \r 回车

 U+0020-->空格space

第四种:

ASCII 判断

private bool IsNumberic(string str)
{
if(str==null||str.Length==0)
return false;
system.text.asciiencoding ascii=new system.text.asciiencoding();
byte[]bytestr=ascii.getbyte(str);
foreach(byte c in bytestr)
{
if(c <48||c>57)
{
return false;
}
return true;
}
}