正则表达式 - 最多 10 位小数的数字验证 (0.01 - 100.0000000000)

Regex - Validation of numeric with up to 10 decimal places (0.01 - 100.0000000000)

我很好奇这个正则表达式是否可以缩短。它应该允许十位数字。

/^(?!0+(?:\.0+)?$)(\d{1,2}\.\d{1,10}|\d{1,2}|(100)|(100\.00)|(100\.0000000000)|(100\.000000000)|(100\.00000000)|(100\.0000000)|(100\.000000)|(100\.00000)|(100\.0000)|(100\.0000)|(100\.000)|(100\.0))$/

你需要使用

/^(?![0.]+$)(?:\d{1,2}(?:\.\d{1,10})?|100(?:\.0{1,10})?)$/

参见regex demo

详情:

  • ^ - 字符串开头
  • (?![0.]+$) - 不允许只有 0 and/or . 个字符直到字符串结尾
  • (?: - 两者之一
    • \d{1,2}(?:\.\d{1,10})? - 一位或两位数字,然后是可选的 . 和一到十位数字
  • | - 或者
    • 100(?:\.0{1,10})? - 100 然后是可选的 . 和一到十个 0 个字符
  • ) - 小组结束
  • $ - 字符串结尾。