在正则中,空字符串肯定不是数字呀,怎么会返回true呢

woshikaka6 2014-04-16 03:14:27
@Test
public void matchesTest() {
String str = "";
System.out.println(str.matches("[0-9]*"));
}

结果返回true。

不能理解了~~
空字符串肯定不是数字呀,怎么会返回true呢
...全文
193 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sducaicai 2014-04-16
  • 打赏
  • 举报
回复
*:零次或多次匹配前面的字符或子表达式。 +:一次或多次匹配前面的字符或子表达式。 改称+就好了
momoyssy 2014-04-16
  • 打赏
  • 举报
回复
后面多了个* *表示前面一位可以出现0个或者多个,这里可以匹配空(什么也没有),或者是0到9的任何数字(重复或多个都可以),只匹配数字的话,把*去掉就可以了.
Herry0818 2014-04-16
  • 打赏
  • 举报
回复
正则写错了

String str = "";
System.out.println(str.matches("^[0-9]+$"));
知风23_ 2014-04-16
  • 打赏
  • 举报
回复
[0-9]*也包含非数字的
ghostkngiht 2014-04-16
  • 打赏
  • 举报
回复
"[0-9]+"
Kenzson 2014-04-16
  • 打赏
  • 举报
回复
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package test;

/**
 *
 * @author Administrator
 */
public class Func {

    public void matchesTest() {
        String str = " ";
        System.out.println(str.matches("[0-9]*"));//false
    }

    public static void main(String[] args) {
        Func f = new Func();
        f.matchesTest();
    }
}
Kenzson 2014-04-16
  • 打赏
  • 举报
回复
你错了,[0-9]*表示的是0或0个以上的数字,str为空,说明包含于[0-9]*情况之中的
tony4geek 2014-04-16
  • 打赏
  • 举报
回复
	String str = "";
		System.out.println(str.matches("[0-9]"));

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧