正则表达式扫描带符号的固定长度小数

时间:2014-01-24 19:35:08

标签: c# .net regex tableofcontents

如何编写正则表达式来扫描输入是否为带符号的小数?

例如:

-1.234567
-.1234567
123456789
1.2345678
1234567.8
-1234.567

输入长度必须为9.

2 个答案:

答案 0 :(得分:2)

您为什么使用RegEx?有更好的方法来确定字符串是否已签名。

使用decimal.TryParse()Math.Sign()来获得答案。

string input = "-1.2342";

decimal decValue;
bool isDecimal = decimal.TryParse(input, out decValue);

if (isDecimal)
{
    int signValue = Math.Sign(decValue);
}
else
{
    throw new Exception("Not a valid decimal!");
}

答案 1 :(得分:0)

你可以这么做:

([-\d]\d\.\d\d\d\d\d\d|[-\d]\d\d\.\d\d\d\d\d|[-\d]\d\d.\d\d\d\d|...)

基本上,这是您列出的任何形式的OR-ed。这是相当繁琐的,但现在我想不出任何其他方式可以用于所有可能的输入。