正则表达式只允许数字字符加符号,点和E.

时间:2012-01-04 12:27:02

标签: c# regex string

我有一个TextBox,它只能接受数字(它们可以是简单的intfloat,其中E是功率因数)。

所以一些有效的例子是:

1
+1.1
0
.1
1E-1
1e-2
-1.66
-6e-10

无效的例子:

  E-1

通常它应该以数字或+和 - 符号或DOT开头。

然后我会把它放在TextChanged事件中,一切都会好的。

 textBox.Text = Regex.Replace(textBox.Text, @"[\d]", ""); //so useless!

2 个答案:

答案 0 :(得分:3)

如果您希望使用指数,请尝试此操作(请务必添加using System.Globalization;):

decimal value;
if(Decimal.TryParse(textBox.Text, NumberStyles.Float, CultureInfo.CurrentCulture, out value))
{
    textBox.Text = value.ToString();
}

答案 1 :(得分:1)

为什么要使用正则表达式?

float f;
bool isNumber = Single.TryParse(textbox.Text, out f);