c# - c# 中货币值(value)的 RegEx 验证

标签 c# regex

必须接受:

1,111.11 or 1000.00

不得接受:

,111 or 1,11,11 or 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;
}

只接受数字

最佳答案

与其尝试使用 RegEx 来验证自己,不如使用一些内置功能来获得所需的结果。

一种方法是:

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 的信息.

关于c# - c# 中货币值(value)的 RegEx 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32366227/

相关文章:

javascript - 使用正则表达式从 JavaScript 中的 URL 中删除 utm_* 参数

c# - 如何抑制所有类型成员的代码分析消息?

c# - MS CRM 插件冒充错误用户

php - 为什么这个使用 "not"和反向引用的正则表达式需要惰性匹配?

sql - Postgresql正则表达式返回多个值

匹配等于或大于 1 的正则表达式,增量为 0.5

javascript - express.js 路由解释

c# - OpenEvent/OpenFileMapping 失败并显示 ERROR_ACCESS_DENIED

c# - 检查 FormatString 是否有效的简单方法?

c# - 在 C# 中销毁变量或数组