我有一个问题来定义匹配浮点数但不识别整数的正则表达式。正则表达式匹配浮点数但不是整数
我有以下正则表达式,它匹配浮动数字。
(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
如何修改上述表达式以使其不匹配整数?
这里是什么应该匹配一个例子:
3.3
.3
5E6
.2e-14
7E+3
4.
5.E2
1e2
我有一个问题来定义匹配浮点数但不识别整数的正则表达式。正则表达式匹配浮点数但不是整数
我有以下正则表达式,它匹配浮动数字。
(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
如何修改上述表达式以使其不匹配整数?
这里是什么应该匹配一个例子:
3.3
.3
5E6
.2e-14
7E+3
4.
5.E2
1e2
如果您正则表达式的味道支持向前看符号,需要浮点字符中的一个数结束前:
((\+|-)?(?=\d*[.eE])([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
这里也是一个稍微优化的版本:
[+-]?(?=\d*[.eE])(?=\.?\d)\d*\.?\d*(?:[eE][+-]?\d+)?
我们从可选的+
或-
开始。然后我们需要在任意数量的数字之后的字符.
,e
或E
之一。然后我们还需要至少一个数字,无论是在字符串之前还是之后。我们只匹配数字,可选.
和更多数字。然后(完全可选)e
或E
和可选的+
或-
然后一个或多个数字。
一个清洁正则表达式版本,没有狂放'('在开始 - ['[+ - ]?(?= \ d * [.EE])([0-9] + ?\ [0-9] * |。?\ [0-9] +)([EE] [+ - ] [0-9] +)'](https://regex101.com/r/7xruwB/1) –
这应该满足您的需求:
[+-]?([0-9]+\.([0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?
1e2''应该匹配吗? –
@MarkDickinson'1e2'不会匹配。1.e2'和'.1e2'将会通过。 – sp00m
是的,这就是为什么我问.'1e2'通常是有效的因为我希望OP会希望匹配,但是这个问题并不清楚,猜猜我应该在问题上发表上述评论,而不是在你的回答中发布。 –
请确认:。只'#.','##','#','#.E#','#·E·'和'。#e#'应该匹配? – sp00m
是的,多数民众赞成在.. – mrjasmin
见http://www.regular-expressions.info/floatingpoint.html –