我正在尝试检查输入的费率的用户输入,我想接受输入的值,如果它有最小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;
}
非常感谢一点帮助。
答案 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})$
答案 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;
}