C# 只有数字、点和最小值的正则表达式
我试图制作一个只接受数字、点的正则表达式,它有最小值和最大值 例如:C# 只有数字、点和最小值的正则表达式,c#,regex,validation,C#,Regex,Validation,我试图制作一个只接受数字、点的正则表达式,它有最小值和最大值 例如: 1.000-有效 100.000-有效 100.000a-无效 .10-无效 100-无效 我有这个,我想用数字和点,这里只缺少一件事,那就是最小和最大验证 @“^([+-]?\d{1,3}(?:,\d{1,3})*(?:\。\d+*)$” 附言: 我在.NETCore上使用数据注释 更新 我有一个javascript,它将用户在输入字段中的输入分隔为千种格式,如: 发件人:1000000 收件人:1.000.000 为了
-有效1.000
-有效100.000
-无效100.000a
-无效.10
-无效100
@“^([+-]?\d{1,3}(?:,\d{1,3})*(?:\。\d+*)$”
附言:
我在.NETCore上使用数据注释
更新
我有一个javascript,它将用户在输入字段中的输入分隔为千种格式,如:
发件人:1000000
收件人:1.000.000
为了更好的用户体验
但是,问题在于数据注释的验证。
我上面的正则表达式是处理点的,我只需要一个最小值和最大值
我试过使用Range(最小值,最大值),但由于点的原因,它将其识别为无效输入
考虑到每个数字后面的字符串中都有空格字符 这应该可以做到:
regex = @"[0-9]{1,3}\.[0-9]{1,5}"
更新:
因为获得的文本将是数字,所以您可以简单地验证它们以进行范围检查
供参考,请看:
让我知道,如果它不起作用根据您的评论,我想这就是您的目标:
^[+-]?[1-9]\d{0,2}(?:\.\d{3})+$
它匹配一个1-3位数的范围(第一个非为0
),然后是至少一个
+三位数的(无上限)序列
这将匹配任何大于1000的数字,并将
作为千个分隔符。由于您的尝试允许,这也允许在开始时使用可选标志
。注意!我无法让
$
和多行在那里工作,因此使用\s
来代替说明。关于bool isValid=Regex.IsMatch(模式,值)&&value>=min&&value Oh,我忘了提到我正在使用netIf上的数据批注。如果这是一个验证属性,您是否考虑过根据您的需求创建一个新属性?它们并不难制作,而且比正则表达式版本的可读性要高很多(如果你的最小值和最大值发生变化,那么很容易修改)。@Chris我怎么做呢?@Muhaki:在评论中很难解释,但幸运的是你可以通过谷歌找到帮助。类似的内容可能会让您开始,或者这里可能有与自定义验证属性相关的问题。a)OP中的字符串中没有空格。b) 这看起来并不能解决最小/最大验证问题。我不确定这应该如何解决问题:)你可以发布一些示例文本,为什么你希望设置最小/最大字符数验证集,当你可以简单地对数字进行排序并获得所需的范围时,如果需要,请告诉我