不带小数且大于10,000的匹配数

时间:2019-06-18 09:25:13

标签: javascript regex

我对regex不太熟悉,正在尝试在JavaScript中创建一个regex代码以仅匹配一个字符串

  • 整数
  • 没有小数/点
  • 且应大于10,000

到目前为止,我拥有类似ff的功能。我想我丢失了一些东西,因为它仍然读取十进制数字和== 10,000。我该怎么办?

[1-9](?!\.)\d[0-9]{3,}

https://regex101.com/r/hG2iU7/61

2 个答案:

答案 0 :(得分:7)

冒着无法直接回答问题的风险,JavaScript已经可以解析数字。为什么要费心尝试重新实现呢?尤其是使用RegExp吗?

为什么不只是parseFloat(theString)Number(theString)整个字符串?

如果您拥有的不是数字,它将失败/返回NaN,您可以使用isNaN对此进行测试。

如果它没有失败,则可以对其进行测试以确保它是整数值:

const isIntegral = Math.trunc(theNumber) === theNumber;

且小于10000

const isLessThan10000 = theNumber < 10000;

与正则表达式相比,此代码将更易于阅读和维护。

答案 1 :(得分:5)

您可以使用

^[1-9][0-9]{4,}$

要排除10000,请提前添加(?!10000$)

^(?!10000$)[1-9][0-9]{4,}$
 ^^^^^^^^^^

请参见regex demoregex graph

enter image description here

详细信息

  • ^-字符串的开头
  • (?!10000$)-如果整个字符串等于10000(即,在字符串(^开始之后),则有10000和然后字符串位置的末尾跟着($))
  • [1-9]-从19的数字
  • [0-9]{4,}-四个或更多数字
  • $-字符串的结尾。