正则表达式 - 检查十进制(javascript)

时间:2011-06-08 20:54:10

标签: javascript regex

我从stackoverflow本身得到了这个表达式 - /^\d+(\.\d{0,9})?$/

它负责:

2
23
23.
25.3
25.4334
0.44

.23失败。可以将其添加到上面的表达式中,还是可以处理所有这些表达式的内容?

3 个答案:

答案 0 :(得分:25)

这将捕获您发布的每个案例以及.23

限制为小数点后9位

var isDecimal = string.match( /^(\d+\.?\d{0,9}|\.\d{1,9})$/ );

没有小数限制:

var isDecimal = string.match( /^(\d+\.?\d*|\.\d+)$/ );

答案 1 :(得分:2)

这涵盖了所有示例,允许否定,并强制执行9位十进制限制:

/^[+-]?(?=.?\d)\d*(\.\d{0,9})?$/

现场演示:https://regexr.com/4chtk

要打破这一点:

[+-]?       # Optional plus/minus sign (drop this part if you don't want to allow negatives)
(?=.?\d)    # Must have at least one numeral (not an empty string or just `.`)
\d*         # Optional integer part of any length
(\.\d{0,9}) # Optional decimal part of up to 9 digits

由于小数点的两边都是可选的,(?=.?\d)确保其中至少有一个存在。因此,数字可以包含整数部分,小数部分或两者,但两者都不能。

我想要注意的一点是,此模式允许23.,这在您的示例中。就个人而言,我称之为无效号码,但这取决于你。如果你改变主意,它就会变得更简单(demo):

/^[+-]?\d*\.?\d{1,9}$/

答案 2 :(得分:1)

试试这个表达式:

  

^\d*\.?\d*$