如何限制整数以允许最多10位数

时间:2016-07-14 07:19:22

标签: c# regex asp.net-web-api

我想限制一个整数以允许最多10位数。从0到任意数字(XXXXXXXXXX)

我正在使用C#和.NET Web API

在我的类(.cs)文件中,我使用过这样的

[RegularExpression(@"^\d{1,10}$", ErrorMessage = "Invalid RequestedN")] 
[Display(Name = "RequestedN")]
public int RequestedN { get; set; }

我会在单击提交按钮时收到JSON响应。我将通过验证Controller中的ModelState来验证JSON(对象)...

当我输入11位数时,它显示如下信息

“对于Int32,JSON整数91234567890太大或太小。路径'配额[0]。请求N',第1行,第81位。”

但我希望消息为“Invalid RequestedN”

我已尝试过另一个RegularExpression,但没有用。

^([1-9]|([1-9][0-9])|([1-9][0-9][0-9])|([1-9][0-9][0-9][0-9])|([1-9][0-9][0-9][0-9][0-9])|\d{6}|\d{7}|\d{8}|\d{9}|\d{10})$

建议解决此问题的任何想法或解决方案

2 个答案:

答案 0 :(得分:3)

您必须使用Int64:

  

Int64是一个不可变值类型,表示有符号整数,其值范围为负9,223,372,036,854,775,808(由Int64 :: MinValue常量表示)到正数9,223,372,036,854,775,807(由Int64 :: MaxValue常量表示。 Framework还包括一个无符号的64位整数值类型UInt64,它表示的值范围为0到18,446,744,073,709,551,615。

因此,将您的号码转换为Int64然后您可以使用您的表达式:^ \ d {1,10} $

答案 1 :(得分:2)

因为您输入的值大于Int32可以容纳的值。

请参阅链接:Int32

  

此常数的值为2,147,483,647;也就是十六进制   0x7FFFFFFF的。

如果您想支持十位数,请考虑另一种数据类型。

也许Int64long数据类型。