7

我正在尝试将浮点十进制数与正则表达式匹配。小数点前可能有也可能没有数字,小数点可能存在也可能不存在,如果存在,它后面可能有数字,也可能没有数字。(对于此应用程序,不允许使用前导 +/- 或尾随“E123”)。我写了这个正则表达式:

/^([\d]*)(\.([\d]*))?$/

正确匹配以下内容:

1
1.
1.23
.23

但是,这也匹配空字符串或仅包含小数点的字符串,这是我不想要的。

目前,我在运行正则表达式后检查 $1 或 $3 的长度是否大于 0。如果不是,则它无效。有没有办法可以直接在正则表达式中做到这一点?

4

3 回答 3

6

我认为这会做你想要的。它要么以数字开头,在这种情况下,小数点和后面的数字是可选的,或者以小数点开头,在这种情况下,它后面必须至少有一个数字。

/^\d+(\.\d*)?|\.\d+$/
于 2008-10-06T13:59:21.470 回答
0

为每种情况创建一个正则表达式,然后对它们进行 OR。然后你只需要测试表达式是否匹配。

/^(\d+(\.\d*)?)|(\d*\.\d+)$/
于 2008-10-06T14:03:55.143 回答
0

一个很晚的答案,但喜欢回答,取自regular-expressions.info

[-+]?[\d]*\.?[\d]+?

更新[\d]*\.?[\d]+?|[\d]+\.将帮助您匹配1.

http://regex101.com/r/lJ7fF4/7

于 2014-10-29T15:01:52.560 回答