2013-01-11 46 views
0

我似乎无法准确找到适合我需求的表达式,我需要验证表示从数据库中提取的双精度值的TextBox。表中的列有一个数字精度,所以我需要一个Regex表达式,它将保持double值的长度以适应表列的精度19。它可以是空的,但不能超出该领域的限制。指定长度的双精度值的正则表达式

确切地说,数据库列的值是一个OleDbType.Currency,但是当我检索我相信的数据类型时,它会转化为double或integer。

如果任何人有一种表达适合我的需要我很感激

+0

你能举一些例子吗? –

+0

我不是百分之百确定货币类型如何使用精度属性,但我相信它会是这样的,如果精度为10,它不会允许12345678.90,因为它超过了10个字符的限制,所以我需要验证输入以确保它不会超过该值,同时占用十进制数 –

+1

另一种方法(除正则表达式验证属性外)将创建(或查找)实现'double.TryParse()'的自定义验证属性,以便您可以使用C#的构建进行验证。 –

回答

2

我想我需要更多的表中的数据的一个例子,太多。不过,如果这样的事情开始变得有:

-?\d+(\.\d{1,x})?

其分解:

-?是一个可选的减号。

\d+超过x位数字为数字一定量

(\.\d{1,x})?为随后通过至少一个数字的可选基团的小数点,通过。对于x,代表您知道它可以具有的最大精度或比例。

+0

似乎接近我所需要的,规模限制只适用于小数点后,我需要限制整个字符串。我会玩弄它,直到我找到我需要的确切组合,谢谢 –