我想写一个check name的方法,non_permit 是不允许出现的字符,permit是允许出现但是不能单独出现的字符, 但是如果这样定义 non_permit="*"";无法与m 中的字符匹配。如果定义non_permit="\*\"";编译时就报错。我该怎么办啊?
 private boolean checkName(GXItem it) {
    String  non_permit="*"";
    String  permit=".-";
    Pattern p = Pattern.compile(non_permit);
    Matcher m = p.matcher(it.getText());
    boolean b = m.find();
    if (b) {
      error(it, "Invalid,please correct it");
    }
    m.replaceAll(permit);
    return!b;
  }

解决方案 »

  1.   

    private static boolean checkName(String text) {
    String non_permit = "\\*";
    String permit = ".-";
    Pattern p = Pattern.compile(non_permit);
    Matcher m = p.matcher(text);
    boolean b = m.find();
    if (b) {
    System.out.println("error");
    }
    m.replaceAll(permit);
    return !b;
    }
      

  2.   

    Pattern p = Pattern.compile("([a-z]|[A-Z]+)\\S*\\.*\\-*([a-z]|[A-Z]*)");
        Matcher m = p.matcher(it.getText());
        boolean b = m.matches();为什么我输入a1也能匹配呢? matches()方法不是完全匹配吗?