我的正则表达式匹配正实数不起作用

时间:2018-07-24 22:59:25

标签: c# asp.net regex

我正在从C#中的TextBox中读取内容,并且我想确保仅允许使用正数(包括整数)。 即1、23、23、23.0、23.42等。 我正在使用的正则表达式是:

handleData()

但是C#只允许我键入数字,而我永远不能输入句号。

谢谢

代码:

[0-9]+\\.?[0-9]*

3 个答案:

答案 0 :(得分:0)

Give this a try

模式为^[0-9]+\.?[0-9]*

在C#中,您可以在字符串前面加上@前缀,这使读取正则表达式更加容易。结果如下:

"\\this \\is \\the \\same" == @"\this \is \the \same"

答案 1 :(得分:0)

您可以简单地使用下面的正则表达式

^\d*[.]?\d*$

Demo Fiddle

enter image description here

答案 2 :(得分:0)

从外观上看,此输入框应该只包含数字,而不能包含其他文本;在这种情况下,我将完全避免使用正则表达式。

鉴于您还是将正则表达式匹配结果解析为float,尝试直接将输入解析为float可能更有意义,这样做的好处是可以允许任何有效的正数float可以首先解析,它还允许以float.Parse/float.TryParse支持的任何其他有效格式输入数字,例如科学记号"1E5" == 100000f或逗号"1,500" == 1500f(视文化而定)。

private static bool IsSamplingRateAllowed(string text)
{
    float number;
    return float.TryParse(text, out number) && number >= 0.0f;
}

除非此数据作为string用于某些外部过程,并且对格式有附加限制(这似乎不太可能,值得在这种情况下包括在内),否则已经,我建议将此输入框与任何其他信息分开,并让用户在框中直接输入数字和仅输入数字。如果您需要从用户那里收集其他信息,则可以根据需要添加其他输入框和控件(这也可以简化对其他信息的验证)。