3 回答
TA贡献1891条经验 获得超3个赞
只需将小数点和E-then-指数部分都设置为可选:
[1-9][0-9]*\.?[0-9]*([Ee][+-]?[0-9]+)?
我不明白为什么您也不想让领导[+-]?也捕获可能的信号,但是,无论如何!-)
编辑:实际上可能没有小数点剩余的数字(在这种情况下,我想必须有小数点和其后的1+数字!),因此显然需要竖线(替代):
(([1-9][0-9]*\.?[0-9]*)|(\.[0-9]+))([Ee][+-]?[0-9]+)?
TA贡献1858条经验 获得超8个赞
这是我上交的。
(([1-9]+\.[0-9]*)|([1-9]*\.[0-9]+)|([1-9]+))([eE][-+]?[0-9]+)?
为了便于讨论,我将这些部分标记为
( ([1-9]+ \. [0-9]* ) | ( [1-9]* \. [0-9]+ ) | ([1-9]+)) ( [eE] [-+]? [0-9]+ )?
-------------------------------------------------------- ----------------------
A B
A:将所有内容匹配到“ e / E”
B:匹配科学计数法
分解A我们得到三个部分
( ([1-9]+ \. [0-9]* ) | ( [1-9]* \. [0-9]+ ) | ([1-9]+) )
----------1---------- ---------2---------- ---3----
第1部分:允许小数点后的1-9,十进制,0个或多个数字(目标1)
第2部分:允许小数点后的1-9,十进制,0个或多个数字(目标1)2)
第3部分:允许1-9中的1个或多个数字,不带小数(请参阅目标列表中的#4)
分解B我们得到4个基本部分
( [eE] [-+]? [0-9]+ )?
..--1- --2-- --3--- -4- ..
第1部分:要求科学表示法使用大写或小写的“ e”(例如目标8和9);
第2部分:允许对指数使用可选的正号或负号(例如目标4、5和6)。
第3部分:允许1或指数的更多数字(目标8)
第4部分:允许科学记号作为一个组是可选的(目标3)
- 3 回答
- 0 关注
- 826 浏览
添加回答
举报