【发布时间】:2015-11-26 13:18:21
【问题描述】:
我需要允许正数和负数范围小数的正则表达式
喜欢.89、-1000、0.00、0、300、.....
我的正则表达式是^\d*\.?\d*
问题是,当您输入特殊字符(如 $、!、*)时,它会接受这些字符。
【问题讨论】:
-
那么使用
float.TryParse有什么问题?
我需要允许正数和负数范围小数的正则表达式
喜欢.89、-1000、0.00、0、300、.....
我的正则表达式是^\d*\.?\d*
问题是,当您输入特殊字符(如 $、!、*)时,它会接受这些字符。
【问题讨论】:
float.TryParse有什么问题?
【讨论】:
我将使用decimal.Parse 和AllowDecimalPoint and AllowLeadingSign styles 以及将. 作为NumberDecimalSeparator 的文化(如InvariantCulture)解析它,而不是正则表达式。
var d = decimal.Parse("-.89",
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture);
这涵盖了您提到的所有需求。
【讨论】:
你错过了一个反斜杠!单个点在 Regex 表达式中具有不同的含义。
public static bool IsValidDecimal()
{
string input = "132456789"
Match m = Regex.Match(input, @"^-?\d*\.?\d+");
return m.Success && m.Value != "";
}
【讨论】:
1.)
1.,这不是一个格式正确的数字!