正则表达式只接受正数和小数

时间:2011-10-10 03:42:39

标签: javascript regex

我需要javascript中的正则表达式,它只接受正数和小数。这就是我所拥有的,但有些事情是错误的 - 它似乎没有单个正数。

/^[-]?[0-9]+[\.]?[0-9]+$/;

例如,9无效。我怎样才能对其进行重组,如果至少有一个正数,它会起作用?

6 个答案:

答案 0 :(得分:21)

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

匹配

0
+0
1.
1.5
.5

但不是

.
1..5
1.2.3
-1

编辑:

要处理科学记数法(1e6),您可能想要

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

如果你想要严格正数,没有零,你可以做

/^[+]?([1-9][0-9]*(?:[\.][0-9]*)?|0*\.0*[1-9][0-9]*)(?:[eE][+-][0-9]+)?$/

答案 1 :(得分:1)

根据您的需要,有几种不同的方法可以做到这一点:

/^[0-9.]+$/匹配11.1但不匹配-1

/^[0-9]+\.[0-9]+$/匹配1.1但不匹配1-1

通常,我建议使用一个简单的regExp参考指南,如http://www.regular-expressions.info/来构建表达式,然后使用javascript直接在浏览器控制台上测试它们:

"123.45".match(/^[0-9.]+$/)

答案 2 :(得分:1)

怎么样:

^[.]?[0-9]+[.]?[0-9]*$

答案 3 :(得分:1)

我发现了一些对我有用的有趣的东西!!! 希望对您也是如此... !!!

[0-9] 。[0-9]

正则表达式仅接受带小数点的正数

比赛:    1,2564,2.5545,254.555

不匹配:    -333、332.332.332、66-665.455、55554-4552

答案 4 :(得分:0)

你可以试试这个 -

^\d{0,10}(\.\d{0,2})?$

还有一个很酷的网站,可以测试以及获取自己正则表达式的描述 https://regex101.com/

答案 5 :(得分:0)

我做了一个以防人们感兴趣: ^([0-9]*)(.[[0-9]+]?)?$

但它没有“+”号 同时它也不接受'-'符号

它接受:

0
0.5
1.0
1.5
2.0
2.5
3.0
1
2
3
4
0.0
0.1
0.9
0.4
1.3
1.11
1.51
2.01
01.5
0.51
1.1
.1

拒绝:

-1.0
-0.5
-0.0
-0.1
-0.7
11123.
1.001.
.1.1