java只容许输入数字字母下划线中文

 

public static void main(String[] args) {
        Pattern pattern = Pattern.compile("[_0-9a-z]+");
        boolean b1 = pattern.matcher("@#").find();
        boolean b2 = pattern.matcher("@#2").find();
        System.err.println("b1="+b1);//false
        System.err.println("b2="+b2);//true,说明pattern.matcher("xxx").find()是只要有一个匹配,哪怕有其余非法字符,也会认为true boolean b3 = "d d的2a-".matches("[_0-9a-zA-Z\\s\u4E00-\u9FA5\\-—]+");//判断数字字母中文下划线空格 boolean b4 = "d d的2a-@".matches("[_0-9a-zA-Z\\s\u4E00-\u9FA5\\-—]+");
        System.err.println("b3="+b3);//true
        System.err.println("b4="+b4);//false,说明,这个是判断只包含,一旦出现非法字符,则false
    }