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

Edd*_*man 0 java regex

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

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

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

那有什么不对?

Lou*_*man 8

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

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

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

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