C#价格验证使用正则表达式其他方式

时间:2015-04-02 14:30:45

标签: c# .net regex

作为我工作的一部分,我需要从Excel工作表中读取价格值。我需要实现

  • 价格:不允许价格中的非数字字符
  • 价格应为有效数字,如int,decimal,double等,如10,10.00,10,233有效,-10,-10.00,-10,2333.00等无效
  • 价格:价格格式(点,逗号,小数)
  • 不允许零价和负价格值
  • 需要检查价格值类型(数字类型,如int,float,decimal等,但会以货币格式保存在数据库中)

我应该为Price选择哪种数据类型?小数或双倍还是其他?在数据库中,我把数据库字段类型作为钱。

1 个答案:

答案 0 :(得分:0)

如果您只需要在C#中验证价格编号,我认为您不需要任何正则表达式。

我建议使用Decimal类型,here您可以找到原因。 Decimal类包含静态TryParse方法,可用于将数字验证为有效的decimal数字。以下是来自MSDN的略微修改的示例(我决定使用InvariantCulture,但这取决于您的数据库是否包含EN-US格式的货币):

var validated = false;
decimal number;
// Parse currency value using current culture. 
var value = "1,097.63";
var style = System.Globalization.NumberStyles.Number;
var culture = System.Globalization.CultureInfo.InvariantCulture;
if (!Decimal.TryParse(value, style, culture, out number))
    if (number > 0)    // Check if the value is not negative or zero
        validated = true;