首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求正则表达式限制只能允许录入特定字符解决思路

2012-05-12 
求正则表达式限制只能允许录入特定字符1、允许录入数值,小数点,- 号;2、允许录入Tab,Enter,Del,BackSpace,四

求正则表达式限制只能允许录入特定字符
1、允许录入数值,小数点,- 号;
2、允许录入Tab,Enter,Del,BackSpace,四个方向键等;
3、限制小数点后只能录入4位,整数部分限制录入6位;

不知道这个正则表达式该怎么写,网上一般只有数值或小数点限制。
请问大家这种要求能否用正则表达式实现,如何实现?

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

[解决办法]

探讨
1、允许录入数值,小数点,- 号;
2、允许录入Tab,Enter,Del,BackSpace,四个方向键等;
3、限制小数点后只能录入4位,整数部分限制录入6位;

不知道这个正则表达式该怎么写,网上一般只有数值或小数点限制。
请问大家这种要求能否用正则表达式实现,如何实现?

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

[解决办法]
C# code
 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.不通过
[解决办法]
“-”应该是负数的意思吗?
是的话就试试我的
[解决办法]
第二个:通过JS判断keycode的范围是否合法要来快点。
[解决办法]
测试文本:-123456.1234
表达式:.*(\d){6}(\.)+(\d){4}
结果
-123456.1234
是这样的意思吗?

不太清楚你需要的逻辑,下面简单举例
C# code
        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();            }        }
[解决办法]
^-?\d{6}.\d{4}$

热点排行