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

时间:2019-02-07 13:20:47

标签: 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之前的数字如何设置小数点后的数字的限制?谢谢

1 个答案:

答案 0 :(得分:0)

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

200

请参见this demo

我建议您使用非捕获组而不是捕获组(即将^(?:(?:[1-9]?[0-9]|1[0-9]{2})(?:\.[0-9]{1,4})?|200(?:\.0{1,4})?)$ 转换为(...)),因为您以后将不使用这些部分。

我看到您的模式自动为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})?-或
    • |-200(?:\.0{1,4})?后跟1或0次出现的200,后跟1至4个零
    • .-组和字符串的结尾。