我有一個問題來定義匹配浮點數但不識別整數的正則表達式。正則表達式匹配浮點數但不是整數
我有以下正則表達式,它匹配浮動數字。
(\+|-)?([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 –