0

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

从我的角度来看,正则表达式regex="[0-9]+"意味着一个字符串,它至少包含一个介于 0 和 9 之间的数字

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

那么有什么问题呢?

4

3 回答 3

8

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

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

(您的正则表达式 ,[0-9]+将匹配仅包含从 0 到 9 的数字以及至少一个数字的任何字符串。它不会神奇地匹配任何实数。如果您想要匹配任何实数的东西,请查看例如JavadocDouble.valueOf(String) , 它指定了用于验证双精度的正则表达式。该正则表达式允许十六进制输入、NaN 和无穷大,但它应该让您更好地了解所需的内容。)

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

于 2012-07-27T16:32:16.190 回答
3

如果你想匹配十进制数字,你的 reg ex 需要是\d*\.?\d+. 如果你也想要底片,那么\-?\d*\.?\d+.

于 2012-07-27T16:33:27.720 回答
1

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

于 2012-07-27T16:33:47.537 回答