正则表达式,数字低于 20k

Regex, numbers below 20k

我正在寻找一个正则表达式来验证数字是否低于 20 000。 我找不到正确的解决方案,到目前为止我有这个:

(^([1-9]([0-9]{0,3})|20000)$)

它工作得很好,但一旦达到 10 000,它就没有匹配项。所以我有 9 999 - 20 000 的差距。

我做错了什么?我不在这些情况下使用正则表达式,但第 3 方程序需要正则表达式来处理这种情况。

谢谢!

([1-9]([0-9]{0,3}) 部分旨在匹配 严格 2000 以下的所有数字,但您将其定义为:"A digit one to nine followed by zero to three digits"。现在 10 000 是一个 1 后跟四个零:您可以将这部分重写为:

[1-9][0-9]{3}|1[0-9]{4}

完整的正则表达式现在是:

^[1-9][0-9]{3}|1[0-9]{4}|20000$

我知道了:

^([01]?\d{0,4}|20000)$

匹配从 0 到 20 000 的任何数字,并允许用户使用前导 0 的数字 Live Demo

您的正则表达式 - ^([1-9]([0-9]{0,3})|20000)$ - 匹配从 1999920000.

的数字

您可以使用

^([1-9]\d{0,3}|1\d{4}|20000)$

demo

细分:

  • ^ - 匹配字符串的开头
  • ([1-9]\d{0,3}|1\d{4}|20000) - 匹配选项之一:
    • [1-9]\d{0,3} - 19 后跟 0 到 3 个任意数字(从 19999
    • 1\d{4} - 1 后跟任意 4 位数字(以匹配 10000 - 19999
    • 20000 - 字面上的 20000
  • $ - 匹配字符串的结尾