不在正则表达式中,以匹配数字(例如1.0,-3,-3.0)(不包括-0.0)



我想验证带有或没有( - (符号的所有十进制或非执行数字的输入字符串,但是-0或-0或-0.00模式应被拒绝。要验证这一点,我有一个正则可以称为
expression1 ="([ - ]? d (。 d (?("
并识别-0或-0.00或-00.000模式,我有另一种表达式,称其为
expression2 ="([ - ] [0] [。] [0] ("
我想进行评估,例如 - ( expression1 (&&(!( expression2 ((我在Java中尝试了以下代码 -

String regEx="(?=(([-]?\d+(\.\d+)?)))(^(?=(([-][0][.]*[0]*))))";
/*String regEx="(?=(*expression1*))(^(?=(*expression2*)))"*/ 
if(Pattern.compile(regEx).matcher("-0.00").matches())
            System.out.println("true");
else System.out.println("false");

但是,对于有效的输入,它也给了我错误。如何纠正我犯的任何错误?注意: - 接受值:0,0.00,12,1.10,-0.9,-09.00;未接受的值-0,-0.000

您可以使用负面的lookahead排除负零数字,如此正则是:

^(?!-0+(?:.0+)?$)-?d+(?:.d+)?$

REGEX DEMO

ps:请注意,在.matches()方法中,方法锚是隐式,因此无需将其添加到正则。

负lookahead表达式(?!-0+(?:.0+)?$)如果输入仅为负零,例如-0-0.00-0.0等。

相关内容

最新更新