Javascript 正则表达式只允许1到20000之间的数字

Javascript 正则表达式只允许1到20000之间的数字,javascript,regex,Javascript,Regex,我是javascript新手,我使用正则表达式验证值是否在1到20000之间 (?:[1-9][0-9])。(?:[1-9][0-9][0-9])。(?:[1-9][0-9][0-9][0-9])。(?:[1-9][0-9][0-9][0-9][0-9])。(?:[1-9][0-9][0-9])。(?:20000)) 这是我尝试过的表达式,但它允许99999有效 ^1?\d{0,4}$ 我认为你应该使用数字比较来获得更好的性能。 我希望这会有所帮助。尽管我怀疑这是最有效的解决方案,但这应该会奏

我是javascript新手,我使用正则表达式验证值是否在1到20000之间
(?:[1-9][0-9])。(?:[1-9][0-9][0-9])。(?:[1-9][0-9][0-9][0-9])。(?:[1-9][0-9][0-9][0-9][0-9])。(?:[1-9][0-9][0-9])。(?:20000))

这是我尝试过的表达式,但它允许99999有效

^1?\d{0,4}$
我认为你应该使用数字比较来获得更好的性能。
我希望这会有所帮助。

尽管我怀疑这是最有效的解决方案,但这应该会奏效

/^((1[0-9]{0,4})|([1-9][0-9]{0,3})|20000)$/
请注意,这是字符串匹配,而不是类型转换,因此小数点和零填充之类的内容将不匹配

:

我使用的单元测试:
for(变量i=0;i<100000;i++){

var应该=i>0&&i为什么不转换成数字,并对它们进行比较?
text=1
也应该可以。我需要它与regexplore一起使用。请给我们一个合理的理由来解释为什么应该使用RegExp进行此操作。您可能不会使用勺子挖沟,尽管这是可能的……仅供参考:复杂的regex也可能导致性能问题。小数、千位分隔符、零填充、不知道分隔符本地化标准等仍然会在这里失败。这是真的,他们会失败。@AlexanderO'Mara:你的答案很好。这些天来,选民们相当“慢”,他们忘了这里的答案不只是针对每一个场合,而是针对每一个OP问题专门定制的。