当前位置:编程学习 > C#/ASP.NET >>

判断字符串是否是纯数字

我程序里有一组输入数据是货物数量,用textBox1.text输入,要验证数据合法性,
如何判断textBox1.text是否为一个数而不包含字母或者空格? --------------------编程问答-------------------- 正则表达式,网上一大堆 --------------------编程问答-------------------- 最简单的方法。
工具箱 拖来 这个控件 RegularExpressionValidator
设置他的
ValidationExpression="\d"  方便简单 --------------------编程问答-------------------- 建议用 MaskedTextBox --------------------编程问答-------------------- 正则
验证数字:^[0-9]*$
--------------------编程问答--------------------

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ValidationExpression="/d+" runat="server" ErrorMessage="Inupt Number" ControlToValidate="Age"></asp:RegularExpressionValidator>
ControlToValidate是你要验证的那个TextBox的ID
--------------------编程问答-------------------- 正则表达式
int.Tryparse
MaskedTextBox --------------------编程问答-------------------- 同意楼上的,一般常用就这几种吧,想不到其它的 --------------------编程问答-------------------- int num = 0;
if(!int.TryParse("111",out num))
{
   //错误
} --------------------编程问答-------------------- 正则表达式,  图方便的话就.NET验证控件! --------------------编程问答-------------------- /d* --------------------编程问答-------------------- @lz:
可以尝试使用
double d;
if(!int.TryPase(textBox1.Text,d))
  {
     MessageBox.Show("输入的文本中包含字母或其他非数字字符","错误提示!");
     return;
   }
//...
同意楼上几位的说法. --------------------编程问答-------------------- 我用masktextbox是能保证输入的是数字,可是鼠标刚点到masktextbox时光标的位置不确定啊,怎么能一点他光标就在box的最前开始输入? --------------------编程问答-------------------- JFJF --------------------编程问答-------------------- ^[0-9]*$正则表达式
楼主最好把一些常用的验证收集起来。。! --------------------编程问答-------------------- 响应textbox的textChanges事件,然后将字符串用这个如下正则判断(两个自己选一个)

 #region 数字输入正则表达式  能带两位小数的数字 
        public static bool CheckData(string ss)
        {
            if (ss.Trim().Length == 0)
                return true;

            Regex zz = new Regex("^(?n)[-]?(0|[1-9]\\d*)(\\.\\d{0,1})?$");//可带位小数的数字正则表达式  
            return zz.IsMatch(ss.Trim());
        }
#endregion 


#region 数字输入正则表达式 0或者非0开头的数字
        public static bool CheckOnlyNum(string ss)
        {
            Regex zz = new Regex("^(0|[1-9][0-9]*)$");
            return zz.IsMatch(ss.Trim());
        }
#endregion 


--------------------编程问答--------------------
引用 12 楼 sd4062825 的回复:
我用masktextbox是能保证输入的是数字,可是鼠标刚点到masktextbox时光标的位置不确定啊,怎么能一点他光标就在box的最前开始输入?


masktextbox.Focus();
masktextbox.SelectAll(); --------------------编程问答-------------------- 非正则写法:
VB中有IsNumberic判断,C#用下面逻辑代替校验。

// C# 
protected void textBox1_Validating (object sender, CancelEventArgs e) 

   try  
   { 
      int x = Int32.Parse(textBox1.Text); 
      errorProvider1.SetError(textBox1, ""); 
   } 
   catch  
   { 
      errorProvider1.SetError(textBox1, "Not an integer value."); 
   } 

--------------------编程问答-------------------- 建议用 MaskedTextBox --------------------编程问答-------------------- 不建议用正则表达式。
因为:需要考虑的太多了。

你说-5e-3这算数字不?
显然算。

不过写出的正则要考虑到这么复杂的情况, 那么也太麻烦了。

另外, 是数字, 也要能用才行。

10的10000000000次方也是数字, 但是判断出来不能用又有什么价值呢。

我还是建议用parse或者tryParse来做,  --------------------编程问答-------------------- 接分
接分接分接分接分接分接分接分接分接分接分接分接分接分接分接分接分接分接分接分 --------------------编程问答-------------------- 顶。。。 --------------------编程问答--------------------
引用 15 楼 codeingsky 的回复:
响应textbox的textChanges事件,然后将字符串用这个如下正则判断(两个自己选一个)

 #region 数字输入正则表达式  能带两位小数的数字 
  public static bool CheckData(string ss)
  {
  if (ss.Trim().Length == 0)
  return true;

  Regex zz = new Reg……

UP! --------------------编程问答-------------------- 还不如回归原始代码,用字符判断函数,判定ASCII码值,什么东西都想用工具跟控件,有时候并不是最好的办法 --------------------编程问答-------------------- 同意楼上的

计算字符串的长度后,判定是否都为字符,通过ASCII. --------------------编程问答-------------------- 留名  我是来学习的 --------------------编程问答-------------------- 用异常处理,方法如下,用textBox1的KeyDown事件,代码如下:

      private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                try
                {
                    int GoodsNumber = Convert.ToInt32(textBox1.Text);

                    textBox1.Text = GoodsNumber.ToString();


                }

                catch (FormatException)
                {
                    MessageBox.Show("含有非法字符!");

                }
                
                } --------------------编程问答-------------------- 改正一下:
    private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                try
                {
                    int GoodsNumber = Convert.ToInt32(textBox1.Text);

                    textBox1.Text = GoodsNumber.ToString();

                    textBox1.Text = "";//补上
                }

                catch (FormatException)
                {
                    MessageBox.Show("含有非法字符!");

                }
                
                }
        } --------------------编程问答-------------------- 晕 给你一个我自己用的
/// <summary>
        /// 判断是否为数字
        /// </summary>
        /// <param name="oText">要判断的字符</param>
        /// <returns>true/false</returns>
        public bool IsNumberic(string oText)
        {
            try
            {
                int var1 = Convert.ToInt32(oText);
                return true;
            }
            catch
            {
                return false;
            }
        }
--------------------编程问答-------------------- 来晚了,网上很多的,正则表达式 --------------------编程问答--------------------  只要用trypares来做就非常的简单了。 --------------------编程问答-------------------- <asp:RegularExpressionValidator ID="RegularExpressionValidator1" ValidationExpression="/d+" runat="server" ErrorMessage="Inupt Number" ControlToValidate="Age"></asp:RegularExpressionValidator>
ControlToValidate是你要验证的那个TextBox的ID
--------------------编程问答-------------------- 正则、异常等都能弄,推荐使用正则!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,