繁体   English   中英

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

[英]Why does “3.5”.matches(“[0-9]+”) return false?

我使用String.matches(String regex)来查找字符串是否与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中的Double.valueOf(String) ,它指定了用于验证双精度的正则表达式。该正则表达式允许使用十六进制输入,NaN和无穷大,但应该可以让您更好地了解所需的东西。

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

如果要匹配十进制数字,则正则表达式必须为\\d*\\.?\\d+ 如果还需要负片,则\\-?\\d*\\.?\\d+

. 不是0-9并且matches测试整个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM