我想验证带有或没有( - (符号的所有十进制或非执行数字的输入字符串,但是-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
等。