1、允许录入数值,小数点,- 号;
2、允许录入Tab,Enter,Del,BackSpace,四个方向键等;
3、限制小数点后只能录入4位,整数部分限制录入6位;不知道这个正则表达式该怎么写,网上一般只有数值或小数点限制。
请问大家这种要求能否用正则表达式实现,如何实现?

解决方案 »

  1.   

    1.  ^[\d.-]+$
    2.  
    3.  ^\d{6}.\d{4}$
      

  2.   

    1. ^[\d.-]+$
    2.  
    3. ^\d{6}\.\d{4}$
      

  3.   

    1. ^[\d.-]+$
    2.  这个 在TextBox的KeyPress去实现,Del和Backspacej键的Ascii码
    3. ^\d{6}.\d{4}$
      

  4.   

    三个条件怎么满足?1和3是不是就冲突了
    1. ^[\d.-]+$
    2. 这个 在TextBox的KeyPress去实现,Del和Backspacej键的Ascii码或者正则
    [\u0008-\u0009\u000D\u0025-\u0028\u002E]+
    3. ^\d{6}.\d{4}$
      

  5.   


     Regex reg = new Regex(@"^-?\d{1,6}\.\d{1,4}$|^-?\d{1,6}$");
                List<string> demo = new List<string> { "sfsf", "11231231.1321", "123.1231313", "-11231231.1321", "-123.1231313", "123123", "12313." };
                demo.ForEach(
                    data => Response.Write(data + (reg.IsMatch(data) ? "通过" : "不通过")+"<hr/>")
                    );
    //结果
    //sfsf不通过
    //11231231.1321不通过
    //123.1231313不通过
    //-11231231.1321不通过
    //-123.1231313不通过
    //123123通过
    //12313.不通过
      

  6.   

    第二个:通过JS判断keycode的范围是否合法要来快点。
      

  7.   

    测试文本:-123456.1234
    表达式:.*(\d){6}(\.)+(\d){4}
    结果
    -123456.1234
    是这样的意思吗?不太清楚你需要的逻辑,下面简单举例        private void textBox1_Leave(object sender, EventArgs e)
            {
                string pattern = @".*(\d){6}(\.)+(\d){4}";
                Regex rg = new Regex(pattern);
                if (!rg.IsMatch(textBox1.Text.Trim()))
                {
                    MessageBox.Show("Date format shoule be '#DDDDDD.DDDD'");
                    textBox1.Focus();
                }
            }