带有长度为5的浮点数的正则表达式,或者。分离器

时间:2014-05-05 13:54:08

标签: c# regex floating-point

我想为最大长度为5的浮点数构建一个正则表达式。 我的号码可以有分隔符“,”或“。”或者它可以是自然数(不是浮点数)

我想允许任何这些值

    XXXXX
    XXXX.X
    XXX.XX
    XX.XXX
    X.XXXX
    X.X
    X.XX
    X.XXX
    X.XXXX
    XX.X
    XXX.X
    etc.

3 个答案:

答案 0 :(得分:9)

简单方法:

^\d{1,5}$|^(?=\d+[.,]\d+$).{3,6}$

Regular expression visualization

Debuggex Demo

答案 1 :(得分:0)

为什么不使用c#条件?类似的东西:

var x = 12345;
if (x.ToString().Length == 5 && x.ToString().Contains("."))
{
    //do something
}

<强>更新 我已经创建了一个样本列表,就像你上面给出的那样,并使其列为double,因为int不接受小数。

List<double> doubleList = new List<double>(new double[]
    {
        12345,
        1234.5,
        123.45,
        12.345,
        1.2345,
        1.2,
        1.23,
        1.234,
        1.2345,
        12.3,
        123.4,
    });

private void button1_Click(object sender, EventArgs e)
{
    foreach (var x in doubleList)
    {
        bool isNum = Regex.IsMatch(x.ToString(), @"^\-{0,1}\d+(.\d+){0,1}$");
        int countOfDot = Regex.Matches(x.ToString(), @"\.").Count;

        if (countOfDot == 1 && isNum) //number w/ decimal place
        {
            string[] spLitX = x.ToString().Split('.');

            if (spLitX[1].Count() <= 5) //float max of 5digits
            {
                Console.WriteLine(x);
            }
        }
        else if (countOfDot == 0 && isNum) //number w/o decimal place
        {
            Console.WriteLine(x);
        }
        else
        {
            //do nothing . . .
        }
    }
}

输出:

12345
1234.5
123.45
12.345
1.2345
1.2
1.23
1.234
1.2345
12.3
123.4

答案 2 :(得分:-1)

^ \ S *(([0-9] {1,3}([0-9] {3})的 [0-9] {3})|。。([0-9] +))(,[0-9] {1,2})?\ s $应验证您的需求 编辑1:这将验证:
10000
100000,33
1.000,13

还有一件事,你可以根据自己的需要进行编辑。 希望这有帮助!