我正在寻找一个正则表达式来验证数字是否低于 20 000。我找不到正确的解决方案,到目前为止我有这个:
(^([1-9]([0-9]{0,3})|20000)$)
效果很好,但是一旦达到 10 000,它就没有匹配项。所以我的差距在 9 999 - 20 000 之间。
我究竟做错了什么?在这些情况下,我不使用正则表达式,但是第 3 方程序需要正则表达式来处理这种情况。
谢谢!
该([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$
您的正则表达式 - ^([1-9]([0-9]{0,3})|20000)$
- 匹配来自1
until9999
和的数字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 )9
1
9999
1\d{4}
-1
后跟任意 4 位数字(匹配10000 - 19999
)20000
- 字面上地20000
$
- 匹配字符串的结尾