Regex dy = new Regex(@"^-?\\d+$");   //匹配整数
            if ((int)e.KeyChar == 8) //Backspace键
                return;            if (!dy.IsMatch(e.KeyChar.ToString())) //匹配整数
            {
                e.Handled = true;
                return;
            }我想验证输入的为整数,这样写有什么问题吗?每次输入负整数都不行?

解决方案 »

  1.   

    1:"^\\d+$"  //非负整数(正整数 + 0) 
    "^[0-9]*[1-9][0-9]*$"  //正整数 
    "^((-\\d+)|(0+))$"  //非正整数(负整数 + 0) 
    "^-[0-9]*[1-9][0-9]*$"  //负整数 
    "^-?\\d+$"    //整数 
    "^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0) 
    "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数 
    "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0) 
    "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数 
    "^(-?\\d+)(\\.\\d+)?$"  //浮点数使用方法:   var r = /^\+?[1-9][0-9]*$/;  //正整数 
                        r.test(str);2: JS整数相加首先保证输入的都是数字 nText1=parseFloat(document.all.text1.value); 
    nText2=parseFloat(document.all.text2.value); 
    nSum=nText1+nText2
     
      

  2.   

    Regex dy = new Regex(@"^-?\d+$");
      

  3.   

    其实问题并不在于正则表达式上,而是你所触发的事件所至,你要等全部输入完成之后才去验证,而不是键盘按下事件,这样的话,每次输入-号时,都会触发,而单一的-号对于这个正则表达式来说是匹配失败,从而导致,负整数输入不成功不修改事件的做法就是将Regex dy = new Regex(@"^-?\\d+$"); ==》
    Regex dy = new Regex(@"^-?\\d*$");