正则表达式初学者。
已经访问过以下内容,没有人回答我的问题:
我有一个简单的正则表达式来检查一个字符串是否包含4个字符后跟2个数字。
[A-Za-z]{4}[0-9]{2}
但是,使用它时,它不匹配。这是我使用的方法以及输入和输出的示例:
Mypass85
false
public static boolean checkPass(char[] ca){
String s = new String(ca);
System.out.println(s); // Prints : Mypass85
p = Pattern.compile("[A-Za-z]{4}[0-9]{2}");
return p.matcher(s).matches();
}
答案 0 :(得分:3)
Matcher#matches
尝试匹配完整输入。请改用Matcher#find
:
public static boolean checkPass(String s){
System.out.println(s); // Prints : Mypass85
p = Pattern.compile("[A-Za-z]{4}[0-9]{2}");
return p.matcher(s).find();
}
答案 1 :(得分:2)
宣传对答案的评论。
它不匹配,因为"Mypass85"
是6个字母后跟2个数字,但您的模式恰好是4个字母后跟2个数字。
您可以传递"Pass85"
之类的内容以匹配您现有的模式,也可以通过将"Mypass85"
更改为{4}
或{{1}来匹配{6}
(4或更多)。