java正则表达式,大写字母、小写字母、特殊字符、数字 两种两种以上组合匹配

package test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class zhengze {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		String str="```#$%^!!";
		
		String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]{6,8}$";
		//①构造一个模式.
		Pattern p=Pattern.compile(regEx);
		Pattern pA=Pattern.compile("^[A-Z]{6,8}$");
		Pattern pa=Pattern.compile("^[a-z]{6,8}$");
		Pattern pNum=Pattern.compile("^[0-9]{6,8}$");
		
		
		//②建造一个匹配器
		Matcher m = p.matcher(str);
		Matcher m1 = pA.matcher(str);
		Matcher m2 = pa.matcher(str);
		Matcher m3 = pNum.matcher(str);
		
		//大小写字母,数字,特殊字符 全集匹配(只要字符串匹配其中任何一个或多个都可以)
		String reg="([A-Z]|[a-z]|[0-9]|[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]){6,8}$";
		Pattern pAll=Pattern.compile(reg);
		Matcher mAll = pAll.matcher(str);
		//③进行判断,得到结果
		
		//因为字符串str如果匹配一个就不可能匹配其他的,具有互异性。还要排除都不匹配的情况,不满足这四项的字符
		if(m.matches()||m1.matches()||m2.matches()||m3.matches()){
			System.out.println("只满足一种情况不符合要求");	
		}else if(mAll.matches()){
			System.out.println("符合6-8位的密码要求");
		}else{
			System.out.println("不符合要求");
		}
	
		
	}

}


或是用一个正则表达式

Pattern p = Pattern.compile("^(?![A-Z]*$)(?![a-z]*$)(?![0-9]*$)(?![^a-zA-Z0-9]*$)\\S{6,8}$");

 

js正则匹配:/^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)(?![\W_]+$)\S{6,8}$/;


验证邮箱账号

 
        String regAcount="^[a-zA-Z]*\\d+{0,20}$";
        Pattern pAcount=Pattern.compile(regAcount);  
        Matcher mAcount = pAcount.matcher(acount); 
        String regemail="^[a-z0-9-]+(.[_a-z0-9-]+)*@([_a-z0-9-]+.)+([a-z]{2}|aero|arpa|biz|com|cn|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$";
        Pattern pemail=Pattern.compile(regemail);  
        Matcher memail = pemail.matcher(acount); 
        if(!(mAcount.matches()||memail.matches())){
            errStr = "账号必须是数字、工号或邮箱";
            return errStr;
        }



 

你可能感兴趣的:(java)