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;
}
问问题
53 次
1 回答
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"));
}
}
于 2013-04-27T11:41:36.140 回答