我写了一个正则表达式来匹配任何数字:
- 积极和消极
- 十进制
- 真实的
下面的正则表达式做得很好,但有一个缺点
([\+\-]{1}){0,1}?[\d]*(\.{1})?[\\d]*
对于**+或-**等输入也是正的。任何指针都将非常感谢。谢谢。
regex应该使用以下输入
5、+5、-5、0.5、+0.5、-0.5、.5、+.5、-.5
并且不应匹配以下输入
+
+.
-.
.
这里是tchrist的答案,完美的作品。
(?:(?i)(?:[+-]?)(?:(?=[.]?[0-9])(?:[0-9]*)(?:(?:[.])(?:[0-9]{0,}))?)(?:(?:[E])(?:(?:[+-]?)(?:[0-9]+))|))
4条答案
按热度按时间qf9go6mv1#
如果你想要一个看起来像C float的东西,下面是如何让Perl使用Regexp::Common module from CPAN来咳嗽出一个正则表达式:
如果你愿意,你可以稍微调整一下,但这给了你基本的想法。
它真的非常灵活。例如,它给出了一个以2为基数的实数的模式,允许每三个地方有逗号:
documentation显示了它可以为您吐出的数字模式的完整可能语法是:
让它真正地为你想要的任何东西定制它。是的,当然你可以在Java中使用这些模式。
好好享受
n3ipq98p2#
您需要至少一个数字,即使用
+
而不是*
作为\d
。我认为您也可以在几个地方删除
{1}
,因为默认情况下这是隐含的。类似地,
{0,1}
可以在后跟?
时被丢弃为我们提供:
htrmnn0y3#
我想应该是这样的:
编辑:
我已经改进了它,所以它不会匹配
-123.
上的点,但它会匹配123.456
编辑2:
所以它不只是匹配+或-,你可以检查这样的符号必须在一个点或一个数字之前,点是可选的。
rbpvctlc4#
这个简单的表达式在我使用Python时很有效:
您可以使用https://regex101.com/进行测试
Example of some values tested