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