Javascript正则表达式检查字符串是否是有效数字

时间:2015-02-19 17:01:18

标签: javascript regex

我希望此正则表达式匹配这些有效的数字格式:

"^[+,-]?[0-9]*(\\.[0-9]*)?$"

1. [+,-]? : + or - optional
2. [0-9]* : as many 0 to 9 number
3. (\\.[0-9]*)? : . and as many 0 to 9 number optional

我快到了,因为我按照需要得到以下内容:

"99999"  -> true
"99"     -> true
"9.9"    -> true
"9.999"  -> true
"9."     -> true
"-9."    -> true
"+9.9"   -> true
"-0.9"   -> true
"-.9"    -> true

但是,以下情况应为false,但正则表达式输出为true:

"+."      
"."

我需要改变什么?

3 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

/^[+-]?(?:\d+\.?|\d*\.\d+)$/

RegEx Demo

答案 1 :(得分:1)

您可以在开头添加否定前瞻。

^(?![+-]?\.$)[+-]?\d*(?:\.\d*)?$

DEMO

答案 2 :(得分:1)

^(?!(?:\+|\+\.|\.)$)[+,-]?[0-9]*(\.[0-9]*)?$

试试这个。看看演示。

https://regex101.com/r/oL9kE8/3

escape \ if required

^(?!(?:\\+|\\+\\.|\\.)$)[+,-]?[0-9]*(\\.[0-9]*)?$

negative lookahead将确保+.+.不匹配。