C#:小数点后的最小到最大位数

时间:2014-01-30 14:25:50

标签: c# regex validation

我正在尝试检查输入的费率的用户输入,我想接受输入的值,如果它有最小2位数到小数点后最多5位数。

有效示例:

*1.12
*1.123
*1.1234
*1.12345

无效:

1
1.1
1.123456

我一直试图用Regex来获取它但是现在它只允许在十进制之后只有5位数而已。这是代码:

//Check if the string is a double 
bool IsDouble(string s)
{
    var regex = new Regex(@"^\d+\.\d{5}?$");
    var check = regex.IsMatch(s);
    return check;  
}

非常感谢一点帮助。

4 个答案:

答案 0 :(得分:2)

这应该这样做:

^\d+\.\d{2,5}$

答案 1 :(得分:1)

使用模式

"^\d+\.\d{2,5}?$"

匹配2到5个字符

答案 2 :(得分:0)

试试这个正则表达式

您可以在此处指定自己的范围d {2,5}

^\s*-?[1-9]\d*(\.\d{2,5})?\s*$

(OR)

^(\d{1,5}|\d{0,5}\.\d{2,5})$

REGEX DEMO

答案 3 :(得分:0)

非正则表达式解决方案
它还返回小数

public int? DecimalAfter (string strDec, out decimal? decNull)
{
    int? decAfter = null;
    strDec = strDec.Trim();
    decimal dec;
    if (decimal.TryParse(strDec, out dec))
    {
        decNull = dec;
        int decPos = strDec.IndexOf('.');
        if (decPos == -1)
        {
            decAfter = 0;
        }
        else
        {
            decAfter = strDec.Length - decPos - 1;
        }
    }
    else decNull = null;

    return decAfter;
}