3

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

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

效果很好,但是一旦达到 10 000,它就没有匹配项。所以我的差距在 9 999 - 20 000 之间。

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

谢谢!

4

3 回答 3

2

([1-9]([0-9]{0,3})部分旨在严格匹配下面的所有数字,2000但您将其定义为:“数字一到九,后跟零到三位数”。现在10 000是一个后跟四个零:您可以将部分重写为:

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

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

^[1-9][0-9]{3}|1[0-9]{4}|20000$
于 2016-03-03T16:39:39.453 回答
2

我有这个:

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

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

于 2016-03-03T16:45:37.373 回答
2

您的正则表达式 - ^([1-9]([0-9]{0,3})|20000)$- 匹配来自1until9999和的数字20000

您可以使用

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

演示

分解:

  • ^- 匹配字符串的开头
  • ([1-9]\d{0,3}|1\d{4}|20000)- 匹配其中一种选择:
    • [1-9]\d{0,3}-后跟 0 到 3 位任意数字(1从until )919999
    • 1\d{4}-1后跟任意 4 位数字(匹配10000 - 19999
    • 20000- 字面上地20000
  • $- 匹配字符串的结尾
于 2016-03-03T16:45:50.950 回答