java - 为什么 "3.5".matches ("[0-9]+") 返回 false?

标签 java regex

我使用方法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 的数字且至少包含一位数字的任何字符串。它不会神奇地与任何实数匹配.如果您想要匹配任何实数的东西,请查看例如 Javadoc for Double.valueOf(String) ,它指定了用于验证 double 的正则表达式。该正则表达式允许十六进制输入,NaN 和无穷大,但它应该让您更好地了解需要什么。 )

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

关于java - 为什么 "3.5".matches ("[0-9]+") 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691917/

相关文章:

java - 如何更改 ClientCredentialsResourceDetails 发出的请求的内容类型?

java - Java 中的 ISO 持续时间格式验证

regex - 如何在Groovy的命令行参数中使用星号(*)?

python - 如何在 python 中返回 re.search() 的字符串表示

php - 子表达式(正则表达式)的无限匹配仅返回一个匹配项

java - 从 ListView 启动 Activity

Java JSR 文档

java - JTable insertRow ArrayIndexOutOfBoundsException

java - 需要将 4 个字节的数组转换为 int

java - 正则表达式或条件来验证两种不同的模式?