我有一个属性Year01
。我装饰相同只取十进制数。但它一旦获得-15
(减去十五)的价值就会中断
如何纠正这个?
[RegularExpression(@"^\s*?([\d\,]+(\.\d+)?|\.\d+)\s*$", ErrorMessage = "Only decimal numbers are allowed")]
public string YEAR01 { get; set; }
感谢。
答案 0 :(得分:0)
让我们来看看你正在使用的正则表达式:
^\s*?([\d\,]+(\.\d+)?|\.\d+)\s*$
第一个符号是^
,代表一行的开头。 \s
是空格符号,*
表示此符号可以多次出现,?
符号代表0 or greater
个空格出现次数。所以这组符号只是在行开头处切掉了空白。
类似的序列可以在正则表达式的末尾找到,它没有?
符号,我认为可以将其复制到正则表达式的左侧,而$
代表换行。
在这个空间切割结构之间,您可以找到数字字符串的主要检查,该字符串表示该数字可以包含任何数字序列和千位分隔符([\d\,]+
表示我们正在搜索{one or greater
1}}带有跟踪千位分隔符的数字的出现次数)之后我们可以或者找不到它后面的小数分隔符和数字。
因此,您想要做的更改非常简单,您只需在主符号组的开头添加带问号的-
符号检查,如下所示:
^\s*?(-?[\d\,]+(\.\d+)?|\.\d+)\s*$
您可以找到更多有用的正则表达式样本here。