regex 正则表达式用于(简单)正浮点值[重复]

vqlkdk9b  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(110)

此问题在此处已有答案

RegEx for both, integer and float [closed](3个答案)
11天前关闭。
这个问题已经被问了很多,但我还没有找到一个符合我标准的答案。
这个答案:https://stackoverflow.com/a/4466218/2092250提供了我迄今为止发现的最好的正则表达式:

^(?!(?:^[-+]?[0.]+(?:[Ee]|$)))(?!(?:^-))(?:(?:[+-]?)(?=[0123456789.])(?:(?:(?:[0123456789]+)(?:(?:[.])(?:[0123456789]*))?|(?:(?:[.])(?:[0123456789]+))))(?:(?:[Ee])(?:(?:[+-]?)(?:[0123456789]+))|))$

字符串
但它包括符号和科学计数法(我想排除)。我把这个答案的测试列表分成3组:

正确匹配:

2
2.
1
1.
1.3
.00000000000000000000000000000000000000000000000000000000000000000000000001
.03
0.3
3.0

正确不匹配:

-2
-1
0
+0
-0
.0
0.
-3.2
5.13.7
00.00
+00
-00
+0-1
0000.
McGillicuddy
.0000000000000000000000000000000000000000000000000000000000000000000
0e50
0e-50

我想排除的匹配:

+2
+1
+365.2425
6.02e23
1e50
1e+50
1e-50


如何编辑它以排除最后一个组?

e3bfsja2

e3bfsja21#

试试看:

^(?![0.]*$)(\d+)?\.?\d*$

字符串
参见https://regex101.com/r/BQix56/latest
^字符串开头
(?!...)否定前瞻Assert不满足以下条件

  • [0.]*$字符串仅包含0 % s或. % s或为空

(\d+)?小数点前的可选数字
\.?可选小数点
\d*小数点后的任意数量的数字(或任意数量的数字,如果没有小数点)
$字符串结尾

相关问题