我使用该方法String.matches(String regex)
来查找字符串是否与正则表达式匹配
从我的角度来看,正则表达式regex="[0-9]+"
意味着一个字符串,它至少包含一个介于 0 和 9 之间的数字
但是当我调试"3.5".matches("[0-9]+")
它返回false。
那么有什么问题呢?
matches
确定正则表达式是否匹配整个字符串。true
如果字符串包含匹配项,它将不会返回。
要测试字符串是否包含与给定正则表达式的匹配项,请使用Pattern.compile(regex).matcher(string).find()
.
(您的正则表达式 ,[0-9]+
将匹配仅包含从 0 到 9 的数字以及至少一个数字的任何字符串。它不会神奇地匹配任何实数。如果您想要匹配任何实数的东西,请查看例如JavadocDouble.valueOf(String)
, 它指定了用于验证双精度的正则表达式。该正则表达式允许十六进制输入、NaN 和无穷大,但它应该让您更好地了解所需的内容。)
或者,编辑正则表达式,使其直接匹配包含一个或多个数字的任何字符串,例如.*[0-9]+.*
可以完成这项工作。
如果你想匹配十进制数字,你的 reg ex 需要是\d*\.?\d+
. 如果你也想要底片,那么\-?\d*\.?\d+
.
.
不是0-9
并matches
测试整个字符串。