只有数字、点和最小值的正则表达式

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 文本框允许用户只输入字母、数字、点和单词之间的空格。正则表达式

用于验证数字逗号分隔值的 Java 正则表达式

正则表达式匹配具有不同数字和最小长度的数字

用正则表达式匹配数字——只有数字和逗号

Java 只有数字,字母,下划线,横杆,英文逗号的正则表达式

正则表达式,字符串中只有数字 C++