gpt4 book ai didi

java - NOT 和 AND 在正则表达式中一起运算以匹配不包括 -0.0 的数字(如 1.0、-3、-3.0)

转载 作者:行者123 更新时间:2023-11-29 04:21:21 26 4
gpt4 key购买 nike

我想使用 RegEx 验证输入字符串,它将接受所有带或不带 (-) 符号的十进制或非十进制数字,但应拒绝 -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

最佳答案

您可以使用负前瞻来排除负零数,如以下正则表达式所示:

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

RegEx Demo

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

负前瞻表达式 (?!-0+(?:\.0+)?$) 如果输入只有负零,则断言失败,例如-0, -0.00, -0.0

关于java - NOT 和 AND 在正则表达式中一起运算以匹配不包括 -0.0 的数字(如 1.0、-3、-3.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com