Regex 正则表达式匹配浮点数,但不匹配整数
我在定义一个匹配浮点数但不识别整数的regexp时遇到了一个问题 我有下面的正则表达式,它匹配浮点数Regex 正则表达式匹配浮点数,但不匹配整数,regex,floating-point,integer,Regex,Floating Point,Integer,我在定义一个匹配浮点数但不识别整数的regexp时遇到了一个问题 我有下面的正则表达式,它匹配浮点数 (\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)? 如何修改上面的表达式,使其不匹配整数 下面是一个应该匹配的示例: 3.3 .3 5E6 .2e-14 7E+3 4. 5.E2 1e2 如果您的regex flavor支持lookaheads,则需要在数字结尾前使用一个浮点字符: ((\+|-)?(?=\d*[.eE])([0-9]+
(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
如何修改上面的表达式,使其不匹配整数
下面是一个应该匹配的示例:
3.3
.3
5E6
.2e-14
7E+3
4.
5.E2
1e2
如果您的regex flavor支持lookaheads,则需要在数字结尾前使用一个浮点字符:
((\+|-)?(?=\d*[.eE])([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?
这里还有一个稍微优化的版本:
[+-]?(?=\d*[.eE])(?=\.?\d)\d*\.?\d*(?:[eE][+-]?\d+)?
我们从可选的
+
或-
开始。然后,我们需要在任意数量的数字后面加上一个字符
,e
或e
。然后,我们还需要至少一个数字,在字符串之前或之后。我们只匹配数字,可选的
和更多数字。然后(完全可选)一个e
或一个e
和可选的+
或-
,然后是一个或多个数字。这个数字应该适合您的需要:
[+-]?([0-9]+\.([0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?
请确认:仅
。
,。
,,。
,,。。,。\e\35;
和应该匹配吗?请参阅@user1285737:像“1e2”这样的字符串应该匹配吗?是的,Dic1E2应该匹配。不会匹配<代码>1.e2和和.1e2会的。是的,这就是我问的原因1e2
通常是浮点数的有效表示形式,因此我希望OP希望浮点数与之匹配。但问题并不清楚。我想我应该把上面的评论贴在这个问题上,而不是你的答案上。对不起。:-)一个更干净的正则表达式版本,开始时没有wild(
)-