我知道这种匹配:
String reg="\\d{4}(-|/)\\d{2}\\1\\d{2}";
String str="2009-09-08";
String str2="2009/09/08";
String str3="2009/09-08";
System.out.println(str.matches(reg));
System.out.println(str2.matches(reg));
System.out.println(str3.matches(reg));
结果:
true
true
false我想知道可不可以这样匹配:
aa3AA
bb3BB
就是aa,AA一起出现,bbBB一起出现;
但不能匹配aa3BB

解决方案 »

  1.   

    \d{4}表示4个数字
    (-|/)表示-或/
    \d{2}又二个数字
    \1表示引用前面的第一个 括号却(-|\)
    \d{2}又二个数字 
    所以整个正则是:4个数字|(或-)2个数字|(或-)2个数字 
      

  2.   

    楼主想要实现的应该不可能,除非你能够将前面的字符用${element}来代替,否则无法推断后面的验证。
      

  3.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Test {
    public static void main(String[] args) {
    String[] array = { "aa3AA", "aaAA", "bb3BB", "bbBB" };
    Pattern pattern = Pattern.compile("(a{2}A{2})|(b{2}B{2})");
    Matcher matcher = null;
    for (String str : array) {
    matcher = pattern.matcher(str);
    if (matcher.find())
    System.out.println("true");
    else
    System.out.println("false");
    }
    }
    }
    貌似有点恶心!