Java,关于正则表达式的一个小问题

请问这个关于正则表达式的方法有哪里不对?输出结果总是false,在12345678中加入 _ 还是false
,代码如下public class xhx {
public static void main(String[]args){
String str = "12345678";
System.out.println(str.matches("[0-9&&_]*"));
}
}

System.out.println(str.matches("[0-9_]*"));

public static void main(String[]args){
String str = "1234567";
System.out.println(str.matches("[0-9\&\&_]*"));
}

我找了一些资料,了解到“&&”是正则匹配的交集符,即匹配这个操作符前后的公共部分,而你用0-9和“-”做交集去匹配“12345678”是不可能为true的,唯一为true的情况是去匹配空串。详细情况可以看该链接。http://www.tuicool.com/articles/EnIZ3i

##System.out.println(str.matches("\d*"));

[0-9&&_]* 表示匹配数字和“_”的交集,而两者之间是没有交集的,所以除非是String str = "" 否则结果肯定为false;

[0-9/&/&_]* 表示匹配0个或多个(0-9或“&”或“_”) 用这个正则表达式 你输出的结果就是true了;