regex - 范围 0-200.0000(包括 0 和 200)的正则表达式

标签 regex max decimal

我正在尝试编写接受 0200.0000 之间数字的正则表达式。

我现在设法写了这个:

^([0-9]|[1-8][0-9]|9[0-9]|1[0-9]{2}|200){1}(\.[0-9]{1,4})?$

但问题是我的表达式接受像 200.0001 和更大的数字。

如果前面的数字是 200,知道如何限制小数点后的数字吗?谢谢

最佳答案

问题是 (\.[0-9]{1,4})?0 之后匹配一个可选的点序列和一个到四个 任何 数字, 1 , 11 , 111 200 , 也。您需要使用 (\.[0-9]{1,4})? 200 之前的数字和 (\.0{1,4})?对于 200 .

^(?:(?:[1-9]?[0-9]|1[0-9]{2})(?:\.[0-9]{1,4})?|200(?:\.0{1,4})?)$

参见 this demo

我建议使用非捕获组而不是捕获组(即将 (...) 转换为 (?:...) ),因为您以后不会使用这些部分。

我看到你的模式是generated online自动,所以我决定稍微“缩小”它。

图案细节

  • ^ - 字符串开始
  • (?: - 匹配两个备选方案的非捕获组的开始:
    • (?:[1-9]?[0-9]|1[0-9]{2})(?:\.[0-9]{1,4})? :
      • (?:[1-9]?[0-9]|1[0-9]{2}) - 来自 1 的可选数字至 9然后是任何一位数字,或 1后跟任意两位数
      • (?:\.[0-9]{1,4})? - 一个可选的点序列,后跟一到四个 any 数字
    • | - 或者
    • 200(?:\.0{1,4})? - 200后跟出现 1 次或 0 次 .后跟 1 到 4 个零
    • )$ - 组和字符串的结尾。

关于regex - 范围 0-200.0000(包括 0 和 200)的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54574328/

相关文章:

regex - 从右侧删除零并在数字左侧添加一些?

c - 哈希表最大函数

regex - 如何在 Modsecurity 规则中编辑正则表达式

regex - 为什么 Groovy 正则表达式匹配器不能被否定?

sql - 使用 max 查找最常出现的 column_name

java - 如何使用 math.max 和 math.min 省略高分和低分

iOS Objective-C 如何获得 2 位小数四舍五入的浮点值?

c - 十进制到二进制转换器 : add spaces to output

c - 如何显示 Float64 类型的数字,最多仅显示一位小数

javascript - 给定一个全名变量,如何仅使用 JS 返回名字+姓氏首字母