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

c#我的难题,大家的举手之劳!

如何在以个textbox里控制只能输入数字(小数点的可以,也可以是整数),我想到用正则表达式,可是不太会用,望高手指点! --------------------编程问答--------------------

  private void text1_KeyPress(object sender, KeyPressEventArgs e)
        {
if (e.KeyChar < '0' && e.KeyChar != '.' || e.KeyChar > '9' && e.KeyChar != '.')
                     {
                         e.Handled = true;
                     }
else
{
e.Handled = false;

}
        }
--------------------编程问答-------------------- 给你举个我用正则验证IP的代码例子。 

using System.Text.RegularExpressions;
string s_reg = @"^([1-9]|[1-9]\d|(1\d{2}|2[0-5][0-5]))\.([0-9]|[1-9]\d|(1\d{2}|2[0-5][0-5]))\.([0-9]|[1-9]\d|(1\d{2}|2[0-5][0-5]))\.([0-9]|[1-9]\d|(1\d{2}|2[0-5][0-5]))$";
            string s = cbLanIP.Text;
            Regex reg = new Regex(s_reg);
            if (reg.IsMatch(s))
            { }
            else 
            {
                MessageBox.Show("IP地址格式错误!","提示!");
            }

验证输入数字的正则表达式楼下的会提供 --------------------编程问答-------------------- 2楼的方法很实用,我很多地方也经常用的
--------------------编程问答-------------------- 能推荐另外一个控件不
NumericUpDown

稍微设置一下就可以达到你的目标 --------------------编程问答-------------------- 其實2樓行。
正則表達式,

數字的話@"[0-9.]+"包括小數點 --------------------编程问答-------------------- 请问能否把这种控件的外观改变一下,和TEXTBOX一样的

引用 4 楼 sl2161 的回复:
能推荐另外一个控件不
NumericUpDown

稍微设置一下就可以达到你的目标
--------------------编程问答-------------------- 学习了! --------------------编程问答-------------------- 如果只想简单的验证数字(就是不考虑正确与否的话)[0-9.]+就可以了
--------------------编程问答-------------------- 匹配特定数字:
^[1-9]d*$    //匹配正整数
^-[1-9]d*$   //匹配负整数
^-?[1-9]d*$   //匹配整数
^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/LCL_data/archive/2009/07/08/4332108.aspx --------------------编程问答--------------------
引用 1 楼 muyebo 的回复:
C# codeprivatevoid text1_KeyPress(object sender, KeyPressEventArgs e)
        {if (e.KeyChar<'0'&& e.KeyChar!='.'|| e.KeyChar>'9'&& e.KeyChar!='.')
                     {
                         e.Ha¡­


这个方法就不错啊~~~ --------------------编程问答-------------------- 简单的处理可以试试看类似这样的。

<input type="text" onblur='Javascript:if(NaN(this.value){alert("不是数字。");this.value="";})' />
--------------------编程问答--------------------

<!--写错括号的位置了。-->
<inputtype="text" onblur='Javascript:if(NaN(this.value)){alert("不是数字。");this.value="";}'/>

引用 11 楼 rainsome 的回复:
简单的处理可以试试看类似这样的。
HTML code<inputtype="text" onblur='Javascript:if(NaN(this.value){alert("不是数字。");this.value="";})'/>
--------------------编程问答--------------------

"(?n)(0|[1-9][0-9]*)(\.[0-9]+)?"
--------------------编程问答-------------------- 学习了,一楼的好点。至少我看的懂。 --------------------编程问答-------------------- JS文件
function isNumber(String)
     { 
        var Letters = "1234567890."; //可以自己增加可输入值
        var i;
        var c;
        if(String.charAt( 0 )=='.')
        return false;
        if( String.charAt( String.length - 1 ) == '.' )
        return false;
        for( i = 0; i < String.length; i ++ )
           {
            c = String.charAt( i );
            if (Letters.indexOf( c ) < 0)
            return false;
           }
      return true;
   }
   function CheckForm(textBox1)
        {
         var id1=textBox1.id;
         var str1_value=document.getElementById(id1).value;
    if(! isNumber(str1_value)) {
    alert("您输入的金额有误!只能阿拉伯数字");
   document.getElementById(id1).value="";
         document.getElementById(id1).focus();
         return false;
       }
  return true;
} --------------------编程问答-------------------- 顶9楼
--------------------编程问答--------------------
引用 1 楼 muyebo 的回复:
C# codeprivatevoid text1_KeyPress(object sender, KeyPressEventArgs e)
        {if (e.KeyChar<'0'&& e.KeyChar!='.'|| e.KeyChar>'9'&& e.KeyChar!='.')
                     {
                         e.Handled=true;
                     }else
{
e.Handled=false;

}
        }

UP --------------------编程问答-------------------- 1楼,UP --------------------编程问答-------------------- using system.text.RegularExpressions;



regex r=new regex("[1-9]")
if(r.IsMatch(textbox.text))
{
        //是数字..后面自己操作
}
else
{
    //不是数字...自己操作
}

--------------------编程问答-------------------- Maskedit控件可否? --------------------编程问答-------------------- 顶2楼 --------------------编程问答--------------------
引用 14 楼 wanjunfu 的回复:
学习了,一楼的好点。至少我看的懂。


哥儿,留下个联系,你实在太搞笑了! --------------------编程问答-------------------- 九楼堪称精典…一楼最能达到lz的消果。还有五楼不能说有错,应该说有漏洞。 --------------------编程问答-------------------- 占位学习。 --------------------编程问答-------------------- 用MaskeTextBox吧,那里可以控制输入的类容的 --------------------编程问答--------------------
引用 25 楼 x0070704 的回复:
用MaskeTextBox吧,那里可以控制输入的类容的


MaskeTextBox?
没用过,赶紧研究一下 --------------------编程问答--------------------
引用 25 楼 x0070704 的回复:
用MaskeTextBox吧,那里可以控制输入的类容的

顶~~~
我正在用~~相当好用~~ --------------------编程问答-------------------- 这问题我以前在论坛上答过,现在又找不到了,郁闷
还好上面的都答了,呵呵 --------------------编程问答-------------------- 1楼是有bug的,退格键和删除键也被屏蔽了,这不大合理。 --------------------编程问答--------------------
引用 17 楼 qqiuzaihui 的回复:
引用 1 楼 muyebo 的回复:
C# codeprivatevoid text1_KeyPress(object sender, KeyPressEventArgs e)
        {if (e.KeyChar <'0'&& e.KeyChar!='.'|| e.KeyChar>'9'&& e.KeyChar!='.')
                    {
                        e.Handled=true;
                    }else
{
e.Handled=false;

}
        }

UP

up
希望lz好好看看,这个才是经典
--------------------编程问答-------------------- 使用js正则表达式
function clearNoNum(obj)
{
//先把非数字的都替换掉,除了数字和.
obj.value = obj.value.replace(/[^\d.]/g,"");
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^\./g,"");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/\.{2,}/g,".");
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
}
<input id="input1" onkeyup="clearNoNum(this)">
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,