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

标签 java regex numbers

我想使用 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/

相关文章:

java - 尝试使用正则表达式将字符串分成三部分

java - Assert.assertEquals 的奇怪行为

JavaScript 正则表达式检查单个特殊字符在字符串中是否出现一次

java - 蓝牙未连接到 4.4.2

java - java中获取所有数字和少数特殊字符的正则表达式

java - 类、方法和随机数生成

javascript - Js 数字 - 分数

java - 匹配最多 2 位小数的数字的正则表达式

java - 如何将 native 查询映射到一个模型类?

java - appendChild 处的 DOMException