常用正则表达式收录【待续】

正则表达式

       /**
	 * 判断日期格式是否正确
	 * @param signTime 日期
	 * @return 若格式正确,则返回true,若不正确则返回false
	 */
	public boolean matcherTime(String signTime) {
		Pattern p = Pattern
				.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3
[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][013457
89]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-
\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s((([0-1][0-9]
)|(2?[0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?{1}$");
		Matcher m = p.matcher(signTime);
		return m.find();
	}
	
	/**
	 * 身份证格式校验
	 * @param IdCard 身份证号码
	 * @return 若格式正确,则返回true,若不正确则返回false
	 */
	public boolean matcherIdCard(String IdCard) {
		Pattern p = Pattern.compile("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{4}{1}$");
		Matcher m = p.matcher(IdCard);
		return m.find();
	}
	
 /**
        * 匹配身份证(Java版)
        * @param passport 身份证号
        * @return 若身份证合法,则返回true否则返回false
        */
       public static boolean testPassport(String passport){
            HashMap<String,String> map=new HashMap<String,String>();
            map.put("11", "北京");
            map.put("12", "天津");
            map.put("13", "河北");
            map.put("14", "山西");
            map.put("15", "内蒙古");
            map.put("21", "辽宁");
            map.put("22", "吉林");
            map.put("23", "黑龙江");
            map.put("31", "上海");
            map.put("32", "江苏");
            map.put("33", "浙江");
            map.put("34", "安徽");
            map.put("35", "福建");
            map.put("36", "江西");
            map.put("37", "山东");
            map.put("41", "河南");
            map.put("42", "湖北");
            map.put("43", "湖南");
            map.put("44", "广东");
            map.put("45", "广西");
            map.put("46", "海南");
            map.put("50", "重庆");
            map.put("51", "四川");
            map.put("52", "贵州");
            map.put("53", "云南");
            map.put("54", "西藏");
            map.put("61", "陕西");
            map.put("62", "甘肃");
            map.put("63", "青海");
            map.put("64", "宁夏");
            map.put("65", "新疆");
            map.put("71", "台湾");
            map.put("81", "香港");
            map.put("82", "澳门");
            map.put("91", "国外");
            String regex="^\\d{17}(\\d|x)$";
            if (!Pattern.matches(regex,passport)) {
                System.out.println("不符合规范");
                return false;
            }
            if (map.get(passport.substring(0, 2)) == null) {
                System.out.println("省份错误");
                return false;
            }
            String sBirthday = passport.substring(6, 10) + "-" + passport.substring(10, 12) + "-"
            + passport.substring(12, 14);
            SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
            try {
                if(df.format(df.parse(sBirthday))==null||!df.format(df.parse(sBirthday)).equals(sBirthday)){
                    System.out.println("出生日期错误");
                    return false;
                }
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                System.out.println("出生日期错误");
                return false;
            }
            regex="x$";
            Pattern p=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
            Matcher m=p.matcher(passport);
            passport=m.replaceAll("a");
            int iSum=0;
            for ( int i = 17; i >= 0; i--)
                iSum += ((int)Math.pow(2, i) % 11) * Integer.valueOf(String.valueOf(passport.charAt(17 - i)), 11);
            if (iSum % 11 != 1) {
                System.out.println("尾数错误");
                return false;
            }
            return true;
        } 


	/**
	 * 联系电话格式校验
	 * @param phone 联系电话号码
	 * @return 若格式正确,则返回true,若不正确则返回false
	 */
	public boolean matcherPhone(String phone) {
		Pattern p = Pattern.compile("(^(\\d{2,4}[-_-—]?)?\\d{3,8}([-_-—]?\\d{3,8})?([-_-—]?\\d{1,7})?$)|(^0?1[35]\\d{9}$)");
		Matcher m = p.matcher(phone);
		return m.find();
	}
	
	/**
	 * 判断编号是否为数字
	 * @param id 编号
	 * @return 若为数字,则返回true,若不正确则返回false
	 */
	public boolean matcherId(String id) {
		Pattern p = Pattern.compile("^[1-9][0-9]*{1}$");
		Matcher m = p.matcher(id);
		return m.find();
	}
    /**
     * 去除字符串中重复出现的字符
     * @param str 字符串
     * @return 返回没有重复的字符串
     */
    public static String cutWord(String str) {
        String s = str;
        s = str.replaceAll("(?s)(.)(?=.*\\1)", "");
        return s;
    }




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值