我正在从C#中的TextBox中读取内容,并且我想确保仅允许使用正数(包括整数)。 即1、23、23、23.0、23.42等。 我正在使用的正则表达式是:
handleData()
但是C#只允许我键入数字,而我永远不能输入句号。
谢谢
代码:
[0-9]+\\.?[0-9]*
答案 0 :(得分:0)
模式为^[0-9]+\.?[0-9]*
在C#中,您可以在字符串前面加上@前缀,这使读取正则表达式更加容易。结果如下:
"\\this \\is \\the \\same"
== @"\this \is \the \same"
答案 1 :(得分:0)
答案 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
用于某些外部过程,并且对格式有附加限制(这似乎不太可能,值得在这种情况下包括在内),否则已经,我建议将此输入框与任何其他信息分开,并让用户在框中直接输入数字和仅输入数字。如果您需要从用户那里收集其他信息,则可以根据需要添加其他输入框和控件(这也可以简化对其他信息的验证)。