这个问题是this question的延续。问题是正则表达式"[-+]?\\d*\\.?\\d+([eE][-+]?\\d+)?"
无法正确找到双打。
例如,输入sdf9.99e.23
不包含双打,如果我们有[eE],则必须是[+ - ]或只是[0-9]。
所以我需要在正则表达式中使用某种“if”。在伪代码中,它将是这样的:if(char[i]==(e|E)) then if(char[i+1] == ('+'|'-')) else return null
。
答案 0 :(得分:0)
使用心灵感应(预期)扩展你的算法并禁止数字,点,非数字,因为数字我可能会建议这3个正则表达式。在相同的字符串上连续使用它们并联合(concat,append)结果。
"[+-]?\\d+((?![\d.])|$)" // ±digits w/o dot after them (actually, this is integer)
"[+-]?\\d+\\.\\d+((?![\deE])|$)" // ±digits, dot, digit w/o [eE] after them
"[+-]?\\d+\\.\\d+[eE][+-]?\\d+" // full variant: ±digits, dot, digits, "e", ±digits
我尝试了一些方法将它合并到一个正则表达式中,但遗憾的是它不起作用。