你这儿需求应该用:
String regex = "[\\x21-\\x7E]+";
import java.util.regex.Pattern;
public class Demo {
public static void main(String[] args) throws Exception {
String regex = "[\\x21-\\x7E]+";
Pattern pattern = Pattern.compile(regex);
System.out.println(pattern.matcher("12345").matches());
System.out.println(pattern.matcher("afdfargeaweg").matches());
System.out.println(pattern.matcher("~!@#$%^&*()_+-={}|[]").matches());
System.out.println(pattern.matcher("afdfwe234124*&^%%").matches());
}
}
你会发现输出都是 true。
\\x21-\\x7E 代表 ASCII 从 33~126 的字符(\x 是16进制的意思)。看 ASCII 码表:
你会发现你要求的字符正是从 33 ~ 126。(32 是空格,127 是 Backspace(就是我们常用的的删除键对应的字符)。