我想在Javascript中验证输入中的数字。
输入应接受:
我使用过这个正则表达式:
^(-?)[\d]*$
效果很好,但它也只接受减号字符' - ' 。我想排除这种可能性。我当然可以用*
替换+
,但这会排除空字符串。
我怎样才能使-
后跟一个至少一个数字,但一个完全空的字符串仍然可以?
答案 0 :(得分:5)
您可以强制使用数字,并将整数匹配部分与可选组包含在一起:
/^(?:-?\d+)?$/
请参阅regex demo
<强>详情
^
- 字符串的开头(?:-?\d+)?
- 一个可选的非捕获组,匹配1或0次出现:
-?
- 可选的-
\d+
- 一位或多位$
- 字符串结束。答案 1 :(得分:2)
以下正则表达式应符合您的要求:
^(|-?\d+)$
这是demo
让我们剖析正则表达式以了解它是如何工作的
^()$
:^
表示字符串的开头,$
表示结束。 ()
告诉匹配器捕获所有内容。所以在我们的例子中,这意味着我们的输入应该完全匹配。|
是一个布尔 OR ,如果满足其中一个正则表达式,则返回正数。-?\d+
匹配正数和负数如下
-?
在0到1次之间匹配-
\d+
匹配一到一个无限次的数字|
OR 运算符之前没有任何内容。这是null或空输入检查。综合所有这些,我们得到了所需的正则表达式。