c#中货币价值的RegEx验证

时间:2015-09-03 02:55:56

标签: c# regex

必须接受:

  

1,111.11 1000.00

不得接受:

  

,111 1,11,11 1.00.00

目前我有这段代码:

if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "[^0-9]"))
{
    MessageBox.Show("Please enter only numbers.");
    //textBox1.Text.Remove(textBox1.Text.Length - 1);
    textBox1.Text = string.Empty;
}

只接受数字

2 个答案:

答案 0 :(得分:4)

如果您使用一些内置功能来获得所需的结果,那么如果您尝试使用RegExes来验证自己,那该怎么办呢?

一种方法是:

var culture = CultureInfo.CreateSpecificCulture("en-US");
decimal currency;
if (Decimal.TryParse(textBox1.text, NumberStyles.Currency, culture, out currency))
{
   // Its a valid currency value
}
else {
  // NOt a valid currency.
  MessageBox.Show("Please enter a valid currency.");
}

这适用于您不想将应用程序用于其他文化的场景(前提是您当然没有硬编码“en-US”)。

详细了解Decimal.TryParse here

答案 1 :(得分:1)

我不是正则表达式的专业人士,但这似乎对我有用。

\d{1,3}(,\d{3})+(\.\d{2})?