我使用方法String.matches(String regex)
来查找字符串是否与正则表达式匹配
从我的观点来看,正则表达式regex="[0-9]+"
表示包含至少一个0到9之间的数字的字符串
但是当我调试"3.5".matches("[0-9]+")
时,它返回false。
那有什么不对?
答案 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-9
而matches
测试整个字符串。