如何检查正则表达式中的两个子表达式中是否至少有一个匹配?

时间:2008-10-06 13:55:56

标签: regex syntax

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

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

正确匹配以下内容:

1
1.
1.23
.23

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

目前我在运行正则表达式后检查$ 1或$ 3的长度大于0.如果不是,则无效。有没有办法可以在正则表达式中直接执行此操作?

3 个答案:

答案 0 :(得分:6)

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

/^\d+(\.\d*)?|\.\d+$/

答案 1 :(得分:0)

为每个案例和OR创建一个正则表达式。那么你只需要测试表达式是否匹配。

/^(\d+(\.\d*)?)|(\d*\.\d+)$/

答案 2 :(得分:0)

答案非常晚,但想回答一下,取自regular-expressions.info

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

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

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