private boolean name_valid (String a){
Pattern regex1=Pattern.compile("^[a-zA-Z]{3,90}$");
Matcher matcher1 = regex1.matcher(a);
boolean flag1= matcher1.matches();
return flag1;
}
答案 0 :(得分:2)
您需要完全指定它失败的输入。这应匹配任何包含3到90个字母字符的字符串。
在那里放置一些调试代码(或使用你必须在name_valid
处断开的调试器)可能是值得的,这样你就可以检查字符串,例如:
System.out.println ("[" + a + "]");
但是值得一提的是,如果你只打算使用一次,那就没有必要编译一个正则表达式。您可以在函数外部编译并多次使用它,否则,它只是使用起来更简单:
private boolean name_valid (String a) {
//System.out.println ("[" + a + "]"); // Debug code
return a.matches ("^[a-zA-Z]{3,90}$");
}
根据您对asdf
输入失败的评论,您还没有向我们展示其他错误。以下代码打印出false
,false
,true
,true
就好了:
import java.util.regex.*;
class Test {
public static boolean name_valid_1 (String a){
Pattern regex1 = Pattern.compile ("^[a-zA-Z]{3,90}$");
Matcher matcher1 = regex1.matcher (a);
boolean flag1 = matcher1.matches();
return flag1;
}
public static boolean name_valid_2 (String a){
return a.matches ("^[a-zA-Z]{3,90}$");
}
public static void main(String args[]) {
System.out.println (name_valid_1 ("as"));
System.out.println (name_valid_1 ("1111"));
System.out.println (name_valid_1 ("asdf"));
System.out.println (name_valid_2 ("asdf"));
}
}