我使用方法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/