mrj*_*min 5 regex floating-point integer
我有一个问题是定义一个匹配浮点数但不识别整数的正则表达式.
我有以下正则表达式,它匹配浮点数.
(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
Run Code Online (Sandbox Code Playgroud)
如何修改上面的表达式,使其与整数不匹配?
以下是应该匹配的示例:
3.3
.3
5E6
.2e-14
7E+3
4.
5.E2
1e2
Run Code Online (Sandbox Code Playgroud)
如果你的正则表达式支持先行,请在数字结尾前需要一个浮点字符:
((\+|-)?(?=\d*[.eE])([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
Run Code Online (Sandbox Code Playgroud)
这里也是一个稍微优化的版本:
[+-]?(?=\d*[.eE])(?=\.?\d)\d*\.?\d*(?:[eE][+-]?\d+)?
Run Code Online (Sandbox Code Playgroud)
我们从一个可选+或开始-.然后我们需要其中一个字符.,e或者E在任意数量的数字之后.然后我们还要求在字符串之前或之后至少有一个数字.我们只匹配数字,可选.和更多数字.然后(完全可选)一个e或一个E和可选的+或-然后一个或多个数字.