我对regex不太熟悉,正在尝试在JavaScript中创建一个regex代码以仅匹配一个字符串
到目前为止,我拥有类似ff的功能。我想我丢失了一些东西,因为它仍然读取十进制数字和== 10,000。我该怎么办?
[1-9](?!\.)\d[0-9]{3,}
答案 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,}$
^^^^^^^^^^
详细信息
^
-字符串的开头(?!10000$)
-如果整个字符串等于10000
(即,在字符串(^
开始之后),则有10000
和然后字符串位置的末尾跟着($
))[1-9]
-从1
到9
的数字[0-9]{4,}
-四个或更多数字$
-字符串的结尾。