为什么“3.5”。匹配(“[0-9] +”)返回false?

时间:2012-07-27 16:30:01

标签: java regex

我使用方法String.matches(String regex)来查找字符串是否与正则表达式匹配

从我的观点来看,正则表达式regex="[0-9]+"表示包含至少一个0到9之间的数字的字符串

但是当我调试"3.5".matches("[0-9]+")时,它返回false。

那有什么不对?

3 个答案:

答案 0 :(得分:8)

matches确定正则表达式是否与整个字符串匹配。如果字符串包含匹配,则不会返回true

要测试字符串是否包含给定正则表达式的匹配项,请使用Pattern.compile(regex).matcher(string).find()

(你的正则表达式[0-9]+将匹配任何只包含0到9位数字的字符串,并且至少有一位数字。它不会与任何实数匹配。如果你想要匹配任何实数的东西编号,查看例如Javadoc for Double.valueOf(String),它指定用于验证双精度的正则表达式。该正则表达式允许十六进制输入,NaN和无穷大,但它应该让您更好地了解所需的内容。)

或者,编辑正则表达式,使其直接匹配包含一个或多个数字的任何字符串,例如.*[0-9]+.*可以胜任。

答案 1 :(得分:3)

如果您想匹配十进制数字,则您的注册号码必须为\d*\.?\d+。如果你也想要否定,那么\-?\d*\.?\d+

答案 2 :(得分:1)

.不是0-9matches测试整个字符串。