package regEx;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ReGex {
public static void main(String[] args) {
String[] s = {"asd", "123", "123abc", "@#$", "ASSF"};
Pattern p = Pattern.compile("^[A-Z]*[a-z]*[0-9]*+$");
for (String s1 : s) {
Matcher m = p.matcher(s1);
if (m.find()) {
System.out.println(s1);
}
}
}
}
答案 0 :(得分:2)
为什么不只是s1.matches("[A-Za-z0-9]+")
:
String[] s = {"asd", "123", "123abc", "@#$", "ASSF"};
for (String s1 : s) {
if (s1.matches("[A-Za-z0-9]+")) {
System.out.println(s1);
}
}
您的正则表达式^[A-Z]*[a-z]*[0-9]*+$
并不意味着匹配字母数字字符串,这意味着:
^
字符串开头[A-Z]*
[a-z]*
[0-9]*
+
我不知道为什么会这样$
字符串结尾修改
我认为您的意思是输入应包含两个字母和数字,在这种情况下,您可以使用此正则表达式(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)
:
if (s1.matches("(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)")) {