我想在我的decimal
申请中验证以下范围内的MVC3
。
0.000000001至100.000000000
这是我尝试过的Regex
,但它不起作用:
(适用^ 100(0 {1,9})[。])$ |([。] ^ \ d {1,9}(\ d {1,9}))$
[RegularExpression(@"(^100([.]0{1,9})?)$|(^\d{1,9}([.]\d{1,9})?)$",
ErrorMessage ="Decimal value should be between 0.000000000 to 100.000000000")]
[Range(0, 100, ErrorMessage = " % must be between {1} and {2}")]
[Display(Name = "Percentage:")]
public double? Percentage { get; set; }
谁能看到我做错了什么?
答案 0 :(得分:1)
^(1\d\d|[1-9]\d|\d)\.\d{0,8}[1-9]$
答案 1 :(得分:1)
在第二种选择中,您可以在点之前使用1到9位数字。
(^100([.]0{1,9})?)$|(^\d{1,9}([.]\d{1,9})?)$
^
将此更改为
^(100(\.0{1,9})?|\d{1,2}(\.\d{1,9})?)$
通过将分数移出交替
,您仍然可以“简化”此操作^(100|\d{1,2})(\.\d{1,9})?$
请注意,此表达式允许前导零,例如“00.1”。
答案 2 :(得分:0)
我相信这应该可以解决问题。
\d+\.\d{9}
答案 3 :(得分:0)
这将是必需的正则表达式:
(\d|[1-9]\d)(\.\d{1,9})?|100(\.0{1,9})?
在你的正则表达式中,(^\d{1,9}([.]\d{1,9})?)$
匹配一到九个数字(可能是九个0到九个9),然后是可选的小数部分。这就是问题所在。
答案 4 :(得分:0)
^(?:(?:[1]\d)|(?:[1-9]))?\d\.\d{9}$
这将符合您的范围。此外,它不会匹配小数点前的双零的奇数情况,如:00.000000000。因此,00.000000000将不是有效数字。
如果你希望它在0的右边有可变小数位,那么你可以使用类似的东西:
^(?:(?:[1]\d)|(?:[1-9]))?\d\.\d{1,9}$
编辑:句子措辞