正则表达式验证RegExCheckUtil
package com.cs.common.util; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author * */ public class RegExCheckUtil { /** * 身份证校验位 */ public static String[] CHECK_DIGIT={"1","0","X","9","8","7","6","5","4","3","2"}; /** * 身份证加权因子 */ public static int[] gene={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1}; /** * 判断是否为email * @param email * @return 是email返回true; 不是email返回false */ public static boolean isEmail(String email) { if(email==null||email.equals(""))return false; Pattern pattern = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"); Matcher isMail = pattern.matcher(email); return isMail.matches(); } /** * 判断字符串是否为数字 * @param email * @return 是数字返回true; 不是数字返回false */ public static boolean isNum(String num) { if(num==null ||num.equals(""))return false; Pattern pattern = Pattern.compile("[0-9]*"); Matcher isNum = pattern.matcher(num); return isNum.matches(); } /** * 判断是否为手机号 */ public static boolean isMobile(String mo) { if(mo==null||mo.equals(""))return false; Pattern pattern=Pattern.compile("^1[35]\\d{9}$"); Matcher isMobile=pattern.matcher(mo); return isMobile.matches(); } /** * 判断是否为身份证号^(\d{15}|(\d{17}[xX\d]))$ */ public static boolean isIdentityCard(String card) { // if(card==null||card.equals(""))return false; // if(card.length()!=15&&card.length()!=18)return false; // Pattern pattern=Pattern.compile("^(\\d{15}|(\\d{17}[xX\\d]))$"); // Matcher isIdentityCard=pattern.matcher(card); // return isIdentityCard.matches(); if(card==null||card.equals(""))return false; if(card.length()!=15&&card.length()!=18)return false; Pattern pattern=Pattern.compile("^(\\d{15}|(\\d{17}[xX\\d]))$"); Matcher isIdentityCard=pattern.matcher(card); if(!isIdentityCard.matches()) return false; if(card.length()==18) { int yearPrefix=Integer.parseInt(card.substring(6,8)); if(yearPrefix<19||yearPrefix>21)return false;//出生日期必须大于1900年小于2100年 int month=Integer.parseInt(card.substring(10,12)); if(month>12||month==0)return false; //验证月 int day=Integer.parseInt(card.substring(12,14)); if(day>31||day==0)return false; //验证日 String checkDigit=getCheckDigitFor18(card); if(checkDigit.equals("-1"))return false; if(checkDigit.equals(card.substring(17,18).toUpperCase())) { return true; }else { return false; } }else if(card.length()==15) { int month=Integer.parseInt(card.substring(8,10)); if(month>12||month==0)return false; //验证月 int day=Integer.parseInt(card.substring(10,12)); if(day>31||day==0)return false; return true; } return false; } private static String getCheckDigitFor18(String card) { if(card==null||card.equals(""))return "-1"; int sum=0; for(int i=0;i<17;i++) { sum+=Integer.parseInt(card.substring(i,i+1))*gene[i]; } return CHECK_DIGIT[sum%11]; } /** * 判断电话号码是否为国内手机号码<br> * 系统判断客户是国内手机用户(主叫号码前缀为13/15/18的11位有效数字)<br> * * @param phoneNo * 电话号码 * @return */ public static boolean isChinaPhoneNo(String phoneNo) { phoneNo = phoneNo.trim(); if (phoneNo.length() < 11) { return false; } else { phoneNo = phoneNo.substring(phoneNo.length() - 11); String regEx = "^(13|15|18)\\d{9}$"; Pattern pattern = Pattern.compile(regEx); Matcher matcher = pattern.matcher(phoneNo); return matcher.matches(); } } }
相关推荐
wangzhaotongalex 2020-10-20
wyq 2020-11-11
TLROJE 2020-10-26
风雨断肠人 2020-10-13
duanqingfeng 2020-09-29
rechanel 2020-11-16
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
phphub 2020-09-10
taomengxing 2020-09-07
MaggieRose 2020-08-19
flyingssky 2020-08-18
山水沐光 2020-08-18
jyj00 2020-08-15
AHuqihua 2020-08-09
山水沐光 2020-08-03