Java正则表达式工具类实例

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

以前写了一个Java的正规表达式的Java工具类,分享一下,有用到的欢迎下载使用。如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下类中用到了 jakarta-oro-2.0.jar包,请大家自己在 apache网站下下载

在这是junit测试单元类我就不提交了,在main()方法中有几个小测试,有兴趣自己玩吧.

这个Java正则表达式工具类目前主要有25种正规表达式,有些不常用,这里只列出15种常用Java正则表达式功能。1.匹配图象; 2 匹配email地址; 3 匹配匹配并提取url ; 4 匹配并提取http ;5.匹配日期 6 匹配电话; 7 匹配身份证 8 匹配邮编代码9. 不包括特殊字符的匹配10 匹配非负整数(正整数 + 0) 11 匹配不包括零的非负整数(正整数 > 0)12 匹配正整数 13 匹配非正整数(负整数 + 0) 14 匹配负整数; 15.匹配整数

    packagecom.ygj.util; importjava.util.*; importorg.apache.oro.text.regex.*; /** *类简介:使用正则表达式验证数据或提取数据,类中的方法全为静态的 *主要方法:1.isHardRegexpValidate(Stringsource,Stringregexp) 区分大小写敏感的正规表达式批配*2.isSoftRegexpValidate(Stringsource,Stringregexp) *不区分大小写的正规表达式批配 *3.getHardRegexpMatchResult(Stringsource,Stringregexp) *返回许要的批配结果集(大小写敏感的正规表达式批配) *4.getSoftRegexpMatchResult(Stringsource,Stringregexp) *返回许要的批配结果集(不区分大小写的正规表达式批配) *5getHardRegexpArray(Stringsource,Stringregexp) *返回许要的批配结果集(大小写敏感的正规表达式批配) *6.getSoftRegexpMatchResult(Stringsource,Stringregexp) *返回许要的批配结果集(不区分大小写的正规表达式批配) *7.getBetweenSeparatorStr(finalStringoriginStr,finalcharleftSeparator,finalcharrightSeparator) *得到指定分隔符中间的字符串的集合 * *@mailwuzhi2000@hotmail.com *@authorygj * */ publicfinalclassRegexp { /**保放有四组对应分隔符*/ staticfinalSetSEPARATOR_SET=newTreeSet(); { SEPARATOR_SET.add(“(“); SEPARATOR_SET.add(“)”); SEPARATOR_SET.add(“[“); SEPARATOR_SET.add(“]”); SEPARATOR_SET.add(“{“); SEPARATOR_SET.add(“}”); SEPARATOR_SET.add(“<“); SEPARATOR_SET.add(“>”); } /**存放各种正规表达式(以key->value的形式)*/ publicstaticHashMapregexpHash=newHashMap(); /**存放各种正规表达式(以key->value的形式)*/ publicstaticListmatchingResultList=newArrayList(); privateRegexp() { } /** *返回Regexp实例 *@return */ publicstaticRegexpgetInstance() { returnnewRegexp(); } /** *匹配图象 * *格式:/相对路径/文件名.后缀(后缀为gif,dmp,png) * *匹配:/forum/head_icon/admini2005111_ff.gif或admini2005111.dmp * *不匹配:c:/admins4512.gif * */ publicstaticfinalStringicon_regexp=”^(/{0,1}\\w){1,}\\.(gif|dmp|png|jpg)$|^\\w{1,}\\.(gif|dmp|png|jpg)$”; /** *匹配email地址 * *格式:XXX@XXX.XXX.XX * *匹配:foo@bar.com或foobar@foobar.com.au * *不匹配:foo@bar或$$$@bar.com * */ publicstaticfinalStringemail_regexp=”(?:\\w[-._\\w]*\\w@\\w[-._\\w]*\\w\\.\\w{2,3}$)”; /** *匹配匹配并提取url * *格式:XXXX://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX * *匹配:http://www.suncer.com或news://www * *提取(MatchResultmatchResult=matcher.getMatch()): *matchResult.group(0)=http://www.suncer.com:8080/index.html?login=true *matchResult.group(1)=http *matchResult.group(2)=www.suncer.com *matchResult.group(3)=:8080 *matchResult.group(4)=/index.html?login=true * *不匹配:c:\window * */ publicstaticfinalStringurl_regexp=”(\\w+)://([^/:]+)(:\\d*)?([^#\\s]*)”; /** *匹配并提取http * *格式:http://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX或ftp://XXX.XXX.XXX或https://XXX * *匹配:http://www.suncer.com:8080/index.html?login=true * *提取(MatchResultmatchResult=matcher.getMatch()): *matchResult.group(0)=http://www.suncer.com:8080/index.html?login=true *matchResult.group(1)=http *matchResult.group(2)=www.suncer.com *matchResult.group(3)=:8080 *matchResult.group(4)=/index.html?login=true * *不匹配:news://www * */ publicstaticfinalStringhttp_regexp=”(http|https|ftp)://([^/:]+)(:\\d*)?([^#\\s]*)”; /** *匹配日期 * *格式(首位不为0):XXXX-XX-XX或XXXXXXXX或XXXX-X-X * *范围:1900–2099 * *匹配:2005-04-04 * *不匹配:01-01-01 * */ publicstaticfinalStringdate_regexp=”^((((19){1}|(20){1})d{2})|d{2})[-\\s]{1}[01]{1}d{1}[-\\s]{1}[0-3]{1}d{1}$”;//匹配日期 /** *匹配电话 * *格式为:0XXX-XXXXXX(10-13位首位必须为0)或0XXXXXXXXXX(10-13位首位必须为0)或 *(0XXX)XXXXXXXX(11-14位首位必须为0)或XXXXXXXX(6-8位首位不为0)或 *XXXXXXXXXXX(11位首位不为0) * *匹配:0371-123456或(0371)1234567或(0371)12345678或010-123456或 *010-12345678或12345678912 * *不匹配:1111-134355或0123456789 * */ publicstaticfinalStringphone_regexp=”^(?:0[0-9]{2,3}[-\\s]{1}|\\(0[0-9]{2,4}\\))[0-9]{6,8}$|^[1-9]{1}[0-9]{5,7}$|^[1-9]{1}[0-9]{10}$”; /** *匹配身份证 * *格式为:XXXXXXXXXX(10位)或XXXXXXXXXXXXX(13位)或XXXXXXXXXXXXXXX(15位)或 *XXXXXXXXXXXXXXXXXX(18位) * *匹配:0123456789123 * *不匹配:0123456 * */ publicstaticfinalStringID_card_regexp=”^\\d{10}|\\d{13}|\\d{15}|\\d{18}$”; /** *匹配邮编代码 * *格式为:XXXXXX(6位) * *匹配:012345 * *不匹配:0123456 * */ publicstaticfinalStringZIP_regexp=”^[0-9]{6}$”;//匹配邮编代码 /** *不包括特殊字符的匹配(字符串中不包括符号数学次方号^单引号’双引号”分号;逗号,帽号:数学减号-右尖括号>左尖括号<反斜杠\即空格,制表符,回车符等) * *格式为:x或一个一上的字符 * *匹配:012345 * *不匹配:0123456 * */ publicstaticfinalStringnon_special_char_regexp=”^[^’\”\\;,:-<>\\s].+$”;//匹配邮编代码 /** *匹配非负整数(正整数+0) */ publicstaticfinalStringnon_negative_integers_regexp=”^\\d+$”; /** *匹配不包括零的非负整数(正整数>0) */ publicstaticfinalStringnon_zero_negative_integers_regexp=”^[1-9]+\\d*$”; /** * *匹配正整数 * */ publicstaticfinalStringpositive_integer_regexp=”^[0-9]*[1-9][0-9]*$”; /** * *匹配非正整数(负整数+0) * */ publicstaticfinalStringnon_positive_integers_regexp=”^((-\\d+)|(0+))$”; /** * *匹配负整数 * */ publicstaticfinalStringnegative_integers_regexp=”^-[0-9]*[1-9][0-9]*$”; /** * *匹配整数 * */ publicstaticfinalStringinteger_regexp=”^-?\\d+$”; /** * *匹配非负浮点数(正浮点数+0) * */ publicstaticfinalStringnon_negative_rational_numbers_regexp=”^\\d+(\\.\\d+)?$”; /** * *匹配正浮点数 * */ publicstaticfinalStringpositive_rational_numbers_regexp=”^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$”; /** * *匹配非正浮点数(负浮点数+0) * */ publicstaticfinalStringnon_positive_rational_numbers_regexp=”^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$”; /** * *匹配负浮点数 * */ publicstaticfinalStringnegative_rational_numbers_regexp=”^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$”; /** * *匹配浮点数 * */ publicstaticfinalStringrational_numbers_regexp=”^(-?\\d+)(\\.\\d+)?$”; /** * *匹配由26个英文字母组成的字符串 * */ publicstaticfinalStringletter_regexp=”^[A-Za-z]+$”; /** * *匹配由26个英文字母的大写组成的字符串 * */ publicstaticfinalStringupward_letter_regexp=”^[A-Z]+$”; /** * *匹配由26个英文字母的小写组成的字符串 * */ publicstaticfinalStringlower_letter_regexp=”^[a-z]+$”; /** * *匹配由数字和26个英文字母组成的字符串 * */ publicstaticfinalStringletter_number_regexp=”^[A-Za-z0-9]+$”; /** * *匹配由数字、26个英文字母或者下划线组成的字符串 * */ publicstaticfinalStringletter_number_underline_regexp=”^\\w+$”; /** *添加正规表达式(以key->value的形式存储) * *@paramregexpName *该正规表达式名称` *@paramregexp *该正规表达式内容 */ publicvoidputRegexpHash(StringregexpName,Stringregexp) { regexpHash.put(regexpName,regexp); } /** *得到正规表达式内容(通过key名提取出value[正规表达式内容]) * *@paramregexpName *正规表达式名称 * *@return正规表达式内容 */ publicStringgetRegexpHash(StringregexpName) { if(regexpHash.get(regexpName)!=null) { return((String)regexpHash.get(regexpName)); } else { System.out.println(“在regexpHash中没有此正规表达式”); return””; } } /** *清除正规表达式存放单元 */ publicvoidclearRegexpHash() { regexpHash.clear(); return; } /** *大小写敏感的正规表达式批配 * *@paramsource *批配的源字符串 * *@paramregexp *批配的正规表达式 * *@return如果源字符串符合要求返回真,否则返回假如:Regexp.isHardRegexpValidate(“ygj@suncer.com.cn”,email_regexp)返回真 */ publicstaticbooleanisHardRegexpValidate(Stringsource,Stringregexp) { try { //用于定义正规表达式对象模板类型 PatternCompilercompiler=newPerl5Compiler(); //正规表达式比较批配对象 PatternMatchermatcher=newPerl5Matcher(); //实例大小大小写敏感的正规表达式模板 PatternhardPattern=compiler.compile(regexp); //返回批配结果 returnmatcher.contains(source,hardPattern); } catch(MalformedPatternExceptione) { e.printStackTrace(); } returnfalse; }

上面的工具类代码包含了常用Java正则表达式功能,稍加调试就可以满足实际项目中的需求。

但我想说,我做了一个善良的平凡女子,并且一直在爱,

Java正则表达式工具类实例

相关文章:

你感兴趣的文章:

标签云: