gpt4 book ai didi

c# - 正则表达式模型验证 : Whole Number or Decimal Multiples of . 25

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:10 24 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式来匹配表示为 .25 的十进制倍数的数值(例如 1.2514.75).

// Must Match
1.0
1.25
1.250000
1.5
1.500
1.75
1.7500

// Must Not Match
1.2
1.46
1.501
1.99

到目前为止,我有以下表达式:\d+(\.((0+)|(250*)|(50*)|(750*)))。当我使用像 gskinner.com/regexr 这样的在线工具时它会起作用.当我使用验证属性中的表达式为我的 EntityFramework 数据库设置种子时,它会产生验证错误:

[RegularExpression(@"^\d+(\.((0+)|(250*)|(50*)|(750*)))$", ErrorMessage = "Hours must be 15 minute increments expressed as decimals (ex. .0, .25, .5, .75)")]
public double Hours { get; set; }

类似的问题(I am looking for a way to round the decimal portion of numbers up or down to the nearest .25, .5, .75, or whole number)但是我需要使用正则表达式来使用上面的数据注释。

问题:

  1. 有人看到我的表情有什么问题吗?

  2. 如果您可以扩展它以支持整数(例如 44.25 但不是 4.4.62)

最佳答案

匹配这样的数字使用正则表达式模式

 (?!0\d)\d+(?:[.](?:25|5|75|0)0*)?(?!\d)

验证输入是这样的数字,请使用正则表达式模式

 ^(?!0\d)\d+(?:[.](?:25|5|75|0)0*)?$

在这两种情况下,第一部分 (?!0\d) 是可选的,以禁止匹配/验证具有无效前导零的数字,例如 000003.250,当match 会修剪它们并只需要 3.250;如果此可选部分出现在正则表达式中,验证将失败。

关于c# - 正则表达式模型验证 : Whole Number or Decimal Multiples of . 25,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com