分享一个java正则验证类
网上正则验证的很多,但是没找到一个比较集中的类,这个是我工作中收集的,现在共享出来。方便大家使用,
这个类可以直接运用到项目中。packagecom.tool.util;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/****@authorJarvis*90%的验证都调用了Regular方法但是本类也可删除大部分方法涉及到正则的判断都直接穿参数和正则表达式*但是为了方便业务类调用和有更直观的含义建议不要这么做*Pattern的matcher已经被同步synchronized所以此类的任何使用正则验证的方法都不需要同步**/publicclassvalidate{publicvalidate(){}//------------------常量定义/***Email正则表达式=^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$*/publicstaticfinalStringEMAIL="^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";/***电话号码正则表达式=(^(\d{2,4}[-_--]?)?\d{3,8}([-_--]?\d{3,8})?([-_--]?\d{1,7})?$)|(^0?1[35]\d{9}$)*/publicstaticfinalStringPHONE="(^(\\d{2,4}[-_--]?)?\\d{3,8}([-_--]?\\d{3,8})?([-_--]?\\d{1,7})?$)|(^0?1[35]\\d{9}$)";/***手机号码正则表达式=^(13[0-9]|15[0|3|6|7|8|9]|18[8|9])\d{8}$*/publicstaticfinalStringMOBILE="^(13[0-9]|15[0|3|6|7|8|9]|18[8|9])\\d{8}$";/***IP地址正则表达式((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))*/publicstaticfinalStringIPADDRESS="((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))";/***Integer正则表达式^-?(([1-9]\d*$)|0)*/publicstaticfinalStringINTEGER="^-?(([1-9]\\d*$)|0)";/***正整数正则表达式>=0^[1-9]\d*|0$*/publicstaticfinalStringINTEGER_NEGATIVE="^[1-9]\\d*|0$";/***负整数正则表达式正则表达式^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$*/publicstaticfinalStringDOUBLE="^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0)$";/***正Double正则表达式>=0^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$*/publicstaticfinalStringDOUBLE_NEGATIVE="^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0$";/***负Double正则表达式正则表达式^(?:[1-9][0-9]?|1[01][0-9]|120)$匹配0-120岁*/publicstaticfinalStringAGE="^(?:[1-9][0-9]?|1[01][0-9]|120)$";/***邮编正则表达式[1-9]\d{5}(?!\d)国内6位邮编*/publicstaticfinalStringCODE="[1-9]\\d{5}(?!\\d)";/***匹配由数字、26个英文字母或者下划线组成的字符串^\w+$*/publicstaticfinalStringSTR_ENG_NUM_="^\\w+$";/***匹配由数字和26个英文字母组成的字符串^[A-Za-z0-9]+$*/publicstaticfinalStringSTR_ENG_NUM="^\\w+$";/***匹配由26个英文字母组成的字符串^[A-Za-z]+$*/publicstaticfinalStringSTR_ENG="^[A-Za-z]+$";/***匹配中文字符^[\u0391-\uFFE5]+$*/publicstaticfinalStringSTR_CHINA="^[\u0391-\uFFE5]+$";/***过滤特殊字符串正则*regEx="[`~!@#$%^&*()+=|{}':;',\\[\\]./?~!@#¥%……&*()--+|{}【】';:""'。,、?]";*/publicstaticfinalStringSTR_SPECIAL="[`~!@#$%^&*()+=|{}':;',\\[\\]./?~!@#¥%……&*()--+|{}【】';:""'。,、?]";/***只能输英文数字中文^[a-zA-Z0-9\u4e00-\u9fa5]+$*/publicstaticfinalStringSTR_ENG_CHA_NUM="^[a-zA-Z0-9\u4e00-\u9fa5]+$";/****//****日期正则支持:*YYYY-MM-DD*YYYY/MM/DD*YYYY_MM_DD*YYYYMMDD*YYYY.MM.DD的形式*/publicstaticfinalStringDATE_ALL="((^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(10|12|0?[13578])([-\\/\\._]?)(3[01]|[12][0-9]|0?[1-9])$)"+"|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(11|0?[469])([-\\/\\._]?)(30|[12][0-9]|0?[1-9])$)"+"|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._]?)(0?2)([-\\/\\._]?)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([3579][26]00)"+"([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)"+"|(^([1][89][0][48])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([2-9][0-9][0][48])([-\\/\\._]?)"+"(0?2)([-\\/\\._]?)(29)$)"+"|(^([1][89][2468][048])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|(^([2-9][0-9][2468][048])([-\\/\\._]?)(0?2)"+"([-\\/\\._]?)(29)$)|(^([1][89][13579][26])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$)|"+"(^([2-9][0-9][13579][26])([-\\/\\._]?)(0?2)([-\\/\\._]?)(29)$))";/***URL正则表达式*匹配httpwwwftp*/publicstaticfinalStringURL="^(http|www|ftp|)?(://)?(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*((:\\d+)?)(/(\\w+(-\\w+)*))*(\\.?(\\w)*)(\\?)?"+"(((\\w*%)*(\\w*\\?)*(\\w*:)*(\\w*\\+)*(\\w*\\.)*(\\w*&)*(\\w*-)*(\\w*=)*(\\w*%)*(\\w*\\?)*"+"(\\w*:)*(\\w*\\+)*(\\w*\\.)*"+"(\\w*&)*(\\w*-)*(\\w*=)*)*(\\w*)*)$";/***身份证正则表达式*/publicstaticfinalStringIDCARD="((11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65)[0-9]{4})"+"(([1|2][0-9]{3}[0|1][0-9][0-3][0-9][0-9]{3}"+"[Xx0-9])|([0-9]{2}[0|1][0-9][0-3][0-9][0-9]{3}))";/***1.匹配科学计数e或者E必须出现有且只有一次不含Dd*正则^[-+]?(\d+(\.\d*)?|\.\d+)([eE]([-+]?([012]?\d{1,2}|30[0-7])|-3([01]?[4-9]|[012]?[0-3])))$*/publicfinalstaticStringSCIENTIFIC_A="^[-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE]([-+]?([012]?\\d{1,2}|30[0-7])|-3([01]?[4-9]|[012]?[0-3])))$";/***2.匹配科学计数e或者E必须出现有且只有一次结尾包含Dd*正则^[-+]?(\d+(\.\d*)?|\.\d+)([eE]([-+]?([012]?\d{1,2}|30[0-7])|-3([01]?[4-9]|[012]?[0-3])))[dD]?$*/publicfinalstaticStringSCIENTIFIC_B="^[-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE]([-+]?([012]?\\d{1,2}|30[0-7])|-3([01]?[4-9]|[012]?[0-3])))[dD]?$";/***3.匹配科学计数是否含有E或者e都通过结尾含有Dd的也通过(针对Double类型)*正则^[-+]?(\d+(\.\d*)?|\.\d+)([eE]([-+]?([012]?\d{1,2}|30[0-7])|-3([01]?[4-9]|[012]?[0-3])))?[dD]?$*/publicfinalstaticStringSCIENTIFIC_C="^[-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE]([-+]?([012]?\\d{1,2}|30[0-7])|-3([01]?[4-9]|[012]?[0-3])))?[dD]?$";/***4.匹配科学计数是否含有E或者e都通过结尾不含Dd*正则^[-+]?(\d+(\.\d*)?|\.\d+)([eE]([-+]?([012]?\d{1,2}|30[0-7])|-3([01]?[4-9]|[012]?[0-3])))?$*/publicfinalstaticStringSCIENTIFIC_D="^[-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE]([-+]?([012]?\\d{1,2}|30[0-7])|-3([01]?[4-9]|[012]?[0-3])))?$";////------------------验证方法/***判断字段是否为空符合返回ture*@paramstr*@returnboolean*/publicstaticsynchronizedbooleanStrisNull(Stringstr){returnnull==str||str.trim().length()正则表达式>=0符合返回ture*@paramstr*@returnboolean*/publicstaticbooleanisINTEGER_NEGATIVE(Stringstr){returnRegular(str,INTEGER_NEGATIVE);}/***判断字段是否为负整数正则表达式正则表达式>=0符合返回ture*@paramstr*@returnboolean*/publicstaticbooleanisDOUBLE_NEGATIVE(Stringstr){returnRegular(str,DOUBLE_NEGATIVE);}/***判断字段是否为负浮点数正则表达式leng;}/***判断字段是否为身份证符合返回ture*@paramstr*@returnboolean*/publicstaticbooleanisIdCard(Stringstr){if(StrisNull(str))returnfalse;if(str.trim().length()==15||str.trim().length()==18){returnRegular(str,IDCARD);}else{returnfalse;}}/***判断字段是否为邮编符合返回ture*@paramstr*@returnboolean*/publicstaticbooleanisCode(Stringstr){returnRegular(str,CODE);}/***判断字符串是不是全部是汉字*@paramstr*@returnboolean*/publicstaticbooleanisChina(Stringstr){returnRegular(str,STR_CHINA);}/***判断字符串是不是全部是英文字母*@paramstr*@returnboolean*/publicstaticbooleanisEnglish(Stringstr){returnRegular(str,STR_ENG);}/***判断字符串是不是全部是英文字母+数字*@paramstr*@returnboolean*/publicstaticbooleanisENG_NUM(Stringstr){returnRegular(str,STR_ENG_NUM);}/***判断字符串是不是全部是英文字母+数字+下划线*@paramstr*@returnboolean*/publicstaticbooleanisENG_NUM_(Stringstr){returnRegular(str,STR_ENG_NUM_);}/***过滤特殊字符串返回过滤后的字符串*@paramstr*@returnboolean*/publicstaticStringfilterStr(Stringstr){Patternp=Pattern.compile(STR_SPECIAL);Matcherm=p.matcher(str);returnm.replaceAll("").trim();}/***匹配是否符合正则表达式pattern匹配返回true*@paramstr匹配的字符串*@parampattern匹配模式*@returnboolean*/privatestaticbooleanRegular(Stringstr,Stringpattern){System.out.println("pattern="+pattern);if(null==str||str.trim().length()<=0)returnfalse;Patternp=Pattern.compile(pattern);Matcherm=p.matcher(str);returnm.matches();}/***判断是不是科学计数法如果是返回true*匹配科学计数e或者E必须出现有且只有一次结尾不含D*匹配模式可参考本类定义的SCIENTIFIC_A,SCIENTIFIC_B,SCIENTIFIC_C,SCIENTIFIC_D*若判断为其他模式可调用Regular(Stringstr,Stringpattern)方法*@paramstr科学计数字符串*@returnboolean*/publicstaticbooleanisScientific(Stringstr){if(StrisNull(str))returnfalse;returnRegular(str,validate.SCIENTIFIC_A);}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub}}