只有数字、点和最小值的正则表达式
Posted
技术标签:
【中文标题】只有数字、点和最小值的正则表达式【英文标题】:Regular expression with only numbers, dots and minimum value 【发布时间】:2018-05-15 11:07:30 【问题描述】:我正在尝试制作一个只接受数字、点并且具有最小值和最大值的正则表达式。
例如:
1.000
- 有效
100.000
- 有效
100.000a
- 无效
.10
- 无效
100
- 无效
我有这个,它可以根据需要使用数字和点,这里只缺少一件事,那就是最小和最大验证。
@"^([+-]?\d1,3(?:,\d1,3)*(?:\.\d+)*)$"
PS: 我在.net core 上使用数据注释
更新
我有一个 javascript 将输入字段中的用户输入分隔为千位格式,例如:
发件人:1000000
收件人:1.000.000
为了更好的用户体验。
但是,问题在于数据注释的验证。 使用上面的正则表达式处理点,我只需要一个最小值和最大值。
我尝试过使用 Range(min, max),但由于这些点,它会将其识别为无效输入。
问候
【问题讨论】:
bool isValid = Regex.IsMatch(pattern, value) && value >= min && value <= max
怎么样
哦,我忘了说我在.net上使用数据注释
如果这是用于验证属性,您是否考虑过根据您的要求创建一个新属性?它们不难制作,并且可能比正则表达式版本更具可读性(如果您的最小值和最大值发生变化,则很容易修改)。
@Chris 我该怎么做?
@Muhaki:在 cmets 中解释起来有点困难,但幸运的是,您可以通过 google 找到帮助。 msdn.microsoft.com/en-us/library/cc668224.aspx 之类的内容可能会帮助您入门,或者此处可能存在与自定义验证属性相关的问题。
【参考方案1】:
鉴于您的评论,我认为这就是您想要的:
^[+-]?[1-9]\d0,2(?:\.\d3)+$
它匹配 1-3 位数字的范围(第一个 不是 是 0
),然后是至少一个(无上限).
+ 三位数序列。
这将匹配任何大于一千的数字,.
作为千位分隔符。而且由于您的尝试允许它,这也允许在开头使用可选符号。
See it in action here at regexstorm。笔记!我无法让 $
和 multiline 在那里工作,所以使用 \s
代替说明。
【讨论】:
【参考方案2】:考虑到字符串中每个数字后面都有空格字符 这应该可以完成工作:
regex = @"[0-9]1,3\.[0-9]1,5"
更新: 由于获得的文本将是数字,因此您可以简单地验证它们以进行范围检查。
参考请看:regex reference
如果不起作用,请告诉我
【讨论】:
a) OP 中的字符串中没有空格。 b) 这看起来不会解决最小/最大验证问题。 我不确定这应该如何解决问题:) 能否请您发布一些示例文本,为什么您希望设置最小/最大字符数验证集,当您可以简单地对您的数字进行排序并获得所需的范围时,如果需要,请告诉我知道以上是关于只有数字、点和最小值的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
Winforms 文本框允许用户只输入字母、数字、点和单词之间的空格。正则表达式