此问题在此处已有答案:
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
型
如何编辑它以排除最后一个组?
1条答案
按热度按时间e3bfsja21#
试试看:
字符串
参见https://regex101.com/r/BQix56/latest
^
字符串开头(?!...)
否定前瞻Assert不满足以下条件[0.]*$
字符串仅包含0
% s或.
% s或为空(\d+)?
小数点前的可选数字\.?
可选小数点\d*
小数点后的任意数量的数字(或任意数量的数字,如果没有小数点)$
字符串结尾