Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将整数限制为最多允许10位_C#_Regex_Asp.net Web Api - Fatal编程技术网

C# 如何将整数限制为最多允许10位

C# 如何将整数限制为最多允许10位,c#,regex,asp.net-web-api,C#,Regex,Asp.net Web Api,我想限制一个整数允许最多10位数字,即从0到任意数字xxxxxxxxx 我正在使用C和.NETWebAPI 在我的Class.cs文件中,我使用了如下方式 [RegularExpression(@"^\d{1,10}$", ErrorMessage = "Invalid RequestedN")] [Display(Name = "RequestedN")] public int RequestedN { get; set; } 我将在单击提交按钮时得到一个JSON响应。我将通过验证控制器中

我想限制一个整数允许最多10位数字,即从0到任意数字xxxxxxxxx

我正在使用C和.NETWebAPI

在我的Class.cs文件中,我使用了如下方式

[RegularExpression(@"^\d{1,10}$", ErrorMessage = "Invalid RequestedN")] 
[Display(Name = "RequestedN")]
public int RequestedN { get; set; }
我将在单击提交按钮时得到一个JSON响应。我将通过验证控制器中的ModelState来验证JSONobject

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

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

但我希望消息作为无效的RequestedN

我试过下面的另一个常规表达,但没有用

^([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})$

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

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

见链接:

该常数的值为2147483647;也就是十六进制 0x7fffff

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


可能是哪种数据类型。

因为您输入的值大于Int32所能容纳的值

见链接:

该常数的值为2147483647;也就是十六进制 0x7fffff

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


可能是哪种数据类型。

您必须使用Int64:

Int64是一种不可变值类型,表示带符号整数,其值的范围从负9223372036854775808(由Int64::MinValue常量表示)到正9223372036854775807(由Int64::MaxValue常量表示)。NET Framework还包括一个无符号64位整数值类型UInt64,它表示0到18446744073709551615之间的值


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

您必须使用Int64:

Int64是一种不可变值类型,表示带符号整数,其值的范围从负9223372036854775808(由Int64::MinValue常量表示)到正9223372036854775807(由Int64::MaxValue常量表示)。NET Framework还包括一个无符号64位整数值类型UInt64,它表示0到18446744073709551615之间的值


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

也许,您应该使用public long RequestedN{get;set;}。请参阅是否确实要将此值存储/处理为int?由于int的范围是-2147483648到2147483647,因此它已经无法存储任何超过10位的整数,有些整数是10位的。也许你想要一根绳子?也就是说,你会对这个数字进行数学运算吗,或者它实际上是一个逻辑上的数字串?好的,好的。现在我想把int 32限制在0到2147483647之间。那么,匹配0到2147483647之间所有值的可能正则表达式是什么呢?您要对这个数字执行数学计算吗?如果不是,它应该是一个字符串。没有数学计算,而是检查用户是否输入了一个有效的整数值,该值是否在其范围内,以及是否有效,并将该值存储在数据库中。也许,您应该使用public long RequestedN{get;set;}。请参阅是否确实要将此值存储/处理为int?由于int的范围是-2147483648到2147483647,因此它已经无法存储任何超过10位的整数,有些整数是10位的。也许你想要一根绳子?也就是说,你会对这个数字进行数学运算吗,或者它实际上是一个逻辑上的数字串?好的,好的。现在我想把int 32限制在0到2147483647之间。那么,匹配0到2147483647之间所有值的可能正则表达式是什么呢?您要对这个数字执行数学计算吗?如果不是,它应该是一个字符串。没有数学计算,而是检查用户是否输入了一个有效的整数值,该值是否在其范围内,以及是否有效,并将该值存储在数据库中。好的,很好。现在我想将int 32限制为接受0到2147483647之间的值。那么匹配0到2147483647之间所有值的可能正则表达式是什么呢。现在我想将int 32限制为接受0到2147483647之间的值。那么匹配0到2147483647之间所有值的可能正则表达式是什么呢。现在我想把int 32限制在0到2147483647之间。那么,匹配0到2147483647之间所有值的可能正则表达式是什么呢?这确实是一个新问题。但是,使用^1?\d{0,9}$将其限制为199999999非常简单。匹配最大值2147483647要复杂得多。这当然是可能的,而且有在线正则表达式生成器来完成这项任务。现在我想把int 32限制在0到2147483647之间,那么匹配的正则表达式是什么呢
从0到2147483647的所有值都是新问题。但是,使用^1?\d{0,9}$将其限制为199999999非常简单。匹配最大值2147483647要复杂得多。这当然是可能的,而且有在线正则表达式生成器来完成这项任务。