我希望将任何数字与正则表达式匹配。我写了这个表达式(添加了空格以便于阅读):
( ([0-9]+(\.[0-9]*)?) | (\.[0-9]+) )( (e|E)(\+|\-)[0-9](\.[0-9])? )?
这需要匹配以下形式之一中的任何数字:
12345
12.345
.12345
12345.
12e-345
或12E-345
12e+345
或12E+345
它匹配前四个符号,但最后四个(e-和e +)符号不匹配。我做错了什么?提前谢谢。
答案 0 :(得分:3)
关注表达的那一部分:
(e|E)(\+|\-)[0-9](\.[0-9])?
您只允许e|E
之后的一个数字,可选地后跟.
和一个其他数字。
答案 1 :(得分:1)
也许这是最后的斜线'\。'。
此外,没有*所以它只允许指数中的一个或两个数字。
(\.[0-9])? )?
答案 2 :(得分:1)
您在[eE]之后寻找1位数字。改变?到了+
( ([0-9]+(\.[0-9]*)?) | (\.[0-9]+) )( (e|E)(\+|\-)[0-9]+(\.[0-9])+ )?
答案 3 :(得分:0)
因为正则表达式匹配12.34e+4.5
形式的数字。 [0-9](\.[0-9])?
部分应更改为[0-9]+
。
( ([0-9]+(\.[0-9]*)?) | (\.[0-9]+) )( (e|E)(\+|\-)[0-9]+ )?
另见How to detect a floating point number using a regular expression。
答案 4 :(得分:0)
使用此:\d+[eE][+-]\d+|\d+\.?\d*|\.\d+