Java 十进制或小数的正则表达式

Java 十进制或小数的正则表达式,java,regex,Java,Regex,现在我有一个正则表达式,它检查字符串是否为十进制格式: -?\\d+(?:.\\d+)//any positive or negative number, including decimals 如果我想为分数创建正则表达式,它也可能由小数组成,例如: 3.1/2.6 1.00/5.00 以下内容是否有效 -?\\(d+(?:.\\d+)|d+(?:.\\d+)/d+(?:.\\d+))//a decimal OR a fraction(including decimals) 您可以使用

现在我有一个正则表达式,它检查字符串是否为十进制格式:

-?\\d+(?:.\\d+)//any positive or negative number, including decimals
如果我想为分数创建正则表达式,它也可能由小数组成,例如:

  • 3.1/2.6
  • 1.00/5.00
以下内容是否有效

 -?\\(d+(?:.\\d+)|d+(?:.\\d+)/d+(?:.\\d+))//a decimal OR a fraction(including decimals)

您可以使用此正则表达式来支持正/负整数、带可选小数部分的小数:

-?\\b\\d+(?:\\.\\d+)?(?:/\\d+(?:\\.\\d+)?)?\\b

或者,如果您正在使用Java的
String#matches()
方法,请使用以下正则表达式:

-?\\d+(?:\\.\\d+)?(?:/\\d+(?:\\.\\d+)?)?

这里有另一个解决方案

用于验证数字(正、负、十进制)和分数的正则表达式 资料来源:


但是,您可能不希望分母中包含
-?
。商定的负分母没有意义。为什么要添加这两个
\\b
?根据问题的措辞,该模式将用于匹配整个字符串,这意味着使用
matches()
,因此它们没有任何意义。@Andreas:如果一行中只有数字,那么使用它只会是
-?\\d+(?:\.\\d+)(?:/\\d+(?:\.\\d+)
1)您指的是“行”,但问题中没有提到输入来自文本文件等多行源。2)
String.matches()
的替代方法是
Matcher.matches()
,它在您预编译模式时使用。为什么在尝试时会丢失一些
d+
前面的“\\”?
/[-]?[0-9]+[,.]?[0-9]*([\/][0-9]+[,.]?[0-9]*)*/g