TextBox只能输入数字几种判断方式
前台代码:
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" />
后台代码:
{
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 | 指示数字字符串可以具有前导符号。有效的前导符号字符是由 NumberFormatInfo 的 PositiveSign 和 NegativeSign 属性确定的。 |
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;
}
}