Java工具类——常用正则表达式工具RegexpUtils

来源:互联网 发布:mac totalfinder 编辑:程序博客网 时间:2024/05/21 06:15
[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.test.core.util;  
  2.   
  3. import org.apache.log4j.Logger;  
  4. import org.apache.oro.text.regex.MalformedPatternException;  
  5. import org.apache.oro.text.regex.Pattern;  
  6. import org.apache.oro.text.regex.PatternCompiler;  
  7. import org.apache.oro.text.regex.PatternMatcher;  
  8. import org.apache.oro.text.regex.Perl5Compiler;  
  9. import org.apache.oro.text.regex.Perl5Matcher;  
  10.   
  11. public final class RegexpUtils {  
  12.   
  13.     private static Logger log = Logger.getLogger(RegexpUtils.class);  
  14.   
  15.     private RegexpUtils() {  
  16.     }  
  17.   
  18.     /** 
  19.      * 匹配图象 
  20.      *  
  21.      *  
  22.      * 格式: /相对路径/文件名.后缀 (后缀为gif,dmp,png) 
  23.      *  
  24.      * 匹配 : /forum/head_icon/admini2005111_ff.gif 或 admini2005111.dmp 
  25.      *  
  26.      *  
  27.      * 不匹配: c:/admins4512.gif 
  28.      *  
  29.      */  
  30.     public static final String ICON_REGEXP = "^(/{0,1}//w){1,}//.(gif|dmp|png|jpg)$|^//w{1,}//.(gif|dmp|png|jpg)$";  
  31.   
  32.     /** 
  33.      * 匹配email地址 
  34.      *  
  35.      *  
  36.      * 格式: XXX@XXX.XXX.XX 
  37.      *  
  38.      * 匹配 : foo@bar.com 或 foobar@foobar.com.au 
  39.      *  
  40.      * 不匹配: foo@bar 或 $$$@bar.com 
  41.      *  
  42.      */  
  43.     public static final String EMAIL_REGEXP = "(?://w[-._//w]*//w@//w[-._//w]*//w//.//w{2,3}$)";  
  44.   
  45.     /** 
  46.      * 匹配并提取url 
  47.      *  
  48.      *  
  49.      * 格式: XXXX://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX 
  50.      *  
  51.      * 匹配 : http://www.suncer.com 或news://www 
  52.      *  
  53.      * 不匹配: c:/window 
  54.      *  
  55.      */  
  56.     public static final String URL_REGEXP = "(//w+)://([^/:]+)(://d*)?([^#//s]*)";  
  57.   
  58.     /** 
  59.      * 匹配并提取http 
  60.      *  
  61.      * 格式: http://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX 或 ftp://XXX.XXX.XXX 或 
  62.      * https://XXX 
  63.      *  
  64.      * 匹配 : http://www.suncer.com:8080/index.html?login=true 
  65.      *  
  66.      * 不匹配: news://www 
  67.      *  
  68.      */  
  69.     public static final String HTTP_REGEXP = "(http|https|ftp)://([^/:]+)(://d*)?([^#//s]*)";  
  70.   
  71.     /** 
  72.      * 匹配日期 
  73.      *  
  74.      *  
  75.      * 格式(首位不为0): XXXX-XX-XX或 XXXX-X-X 
  76.      *  
  77.      *  
  78.      * 范围:1900--2099 
  79.      *  
  80.      *  
  81.      * 匹配 : 2005-04-04 
  82.      *  
  83.      *  
  84.      * 不匹配: 01-01-01 
  85.      *  
  86.      */  
  87.     public static final String DATE_BARS_REGEXP = "^((((19){1}|(20){1})\\d{2})|\\d{2})-[0,1]?\\d{1}-[0-3]?\\d{1}$";    
  88.   
  89.     /** 
  90.      * 匹配日期 
  91.      *  
  92.      *  
  93.      * 格式: XXXX/XX/XX 
  94.      *  
  95.      *  
  96.      * 范围: 
  97.      *  
  98.      *  
  99.      * 匹配 : 2005/04/04 
  100.      *  
  101.      *  
  102.      * 不匹配: 01/01/01 
  103.      *  
  104.      */  
  105.     public static final String DATE_SLASH_REGEXP = "^[0-9]{4}/(((0[13578]|(10|12))/(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)/(0[1-9]|[1-2][0-9]|30)))$";  
  106.   
  107.     /** 
  108.      * 匹配电话 
  109.      *  
  110.      *  
  111.      * 格式为: 0XXX-XXXXXX(10-13位首位必须为0) 或0XXX XXXXXXX(10-13位首位必须为0) 或 
  112.      *  
  113.      * (0XXX)XXXXXXXX(11-14位首位必须为0) 或 XXXXXXXX(6-8位首位不为0) 或 
  114.      * XXXXXXXXXXX(11位首位不为0) 
  115.      *  
  116.      *  
  117.      * 匹配 : 0371-123456 或 (0371)1234567 或 (0371)12345678 或 010-123456 或 
  118.      * 010-12345678 或 12345678912 
  119.      *  
  120.      *  
  121.      * 不匹配: 1111-134355 或 0123456789 
  122.      *  
  123.      */  
  124.     public static final String PHONE_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}$";  
  125.   
  126.     /** 
  127.      * 匹配身份证 
  128.      *  
  129.      * 格式为: XXXXXXXXXX(10位) 或 XXXXXXXXXXXXX(13位) 或 XXXXXXXXXXXXXXX(15位) 或 
  130.      * XXXXXXXXXXXXXXXXXX(18位) 
  131.      *  
  132.      * 匹配 : 0123456789123 
  133.      *  
  134.      * 不匹配: 0123456 
  135.      *  
  136.      */  
  137.     public static final String ID_CARD_REGEXP = "^//d{10}|//d{13}|//d{15}|//d{18}$";  
  138.   
  139.     /** 
  140.      * 匹配邮编代码 
  141.      *  
  142.      * 格式为: XXXXXX(6位) 
  143.      *  
  144.      * 匹配 : 012345 
  145.      *  
  146.      * 不匹配: 0123456 
  147.      *  
  148.      */  
  149.     public static final String ZIP_REGEXP = "^[0-9]{6}$";// 匹配邮编代码  
  150.   
  151.     /** 
  152.      * 不包括特殊字符的匹配 (字符串中不包括符号 数学次方号^ 单引号' 双引号" 分号; 逗号, 帽号: 数学减号- 右尖括号> 左尖括号< 反斜杠/ 
  153.      * 即空格,制表符,回车符等 ) 
  154.      *  
  155.      * 格式为: x 或 一个一上的字符 
  156.      *  
  157.      * 匹配 : 012345 
  158.      *  
  159.      * 不匹配: 0123456 // ;,:-<>//s].+$";// 
  160.      */  
  161.     public static final String NON_SPECIAL_CHAR_REGEXP = "^[^'/";  
  162.     // 匹配邮编代码  
  163.   
  164.     /** 
  165.      * 匹配非负整数(正整数 + 0) 
  166.      */  
  167.     public static final String NON_NEGATIVE_INTEGERS_REGEXP = "^//d+$";  
  168.   
  169.     /** 
  170.      * 匹配不包括零的非负整数(正整数 > 0) 
  171.      */  
  172.     public static final String NON_ZERO_NEGATIVE_INTEGERS_REGEXP = "^[1-9]+//d*$";  
  173.   
  174.     /** 
  175.      *  
  176.      * 匹配正整数 
  177.      *  
  178.      */  
  179.     public static final String POSITIVE_INTEGER_REGEXP = "^[0-9]*[1-9][0-9]*$";  
  180.   
  181.     /** 
  182.      *  
  183.      * 匹配非正整数(负整数 + 0) 
  184.      *  
  185.      */  
  186.     public static final String NON_POSITIVE_INTEGERS_REGEXP = "^((-//d+)|(0+))$";  
  187.   
  188.     /** 
  189.      *  
  190.      * 匹配负整数 
  191.      *  
  192.      */  
  193.     public static final String NEGATIVE_INTEGERS_REGEXP = "^-[0-9]*[1-9][0-9]*$";  
  194.   
  195.     /** 
  196.      *  
  197.      * 匹配整数 
  198.      *  
  199.      */  
  200.     public static final String INTEGER_REGEXP = "^-?//d+$";  
  201.   
  202.     /** 
  203.      *  
  204.      * 匹配非负浮点数(正浮点数 + 0) 
  205.      *  
  206.      */  
  207.     public static final String NON_NEGATIVE_RATIONAL_NUMBERS_REGEXP = "^//d+(//.//d+)?$";  
  208.   
  209.     /** 
  210.      *  
  211.      * 匹配正浮点数 
  212.      *  
  213.      */  
  214.     public static final String POSITIVE_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]*))$";  
  215.   
  216.     /** 
  217.      *  
  218.      * 匹配非正浮点数(负浮点数 + 0) 
  219.      *  
  220.      */  
  221.     public static final String NON_POSITIVE_RATIONAL_NUMBERS_REGEXP = "^((-//d+(//.//d+)?)|(0+(//.0+)?))$";  
  222.   
  223.     /** 
  224.      *  
  225.      * 匹配负浮点数 
  226.      *  
  227.      */  
  228.     public static final String NEGATIVE_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]*)))$";  
  229.   
  230.     /** 
  231.      *  
  232.      * 匹配浮点数 
  233.      *  
  234.      */  
  235.     public static final String RATIONAL_NUMBERS_REGEXP = "^(-?//d+)(//.//d+)?$";  
  236.   
  237.     /** 
  238.      *  
  239.      * 匹配由26个英文字母组成的字符串 
  240.      *  
  241.      */  
  242.     public static final String LETTER_REGEXP = "^[A-Za-z]+$";  
  243.   
  244.     /** 
  245.      *  
  246.      * 匹配由26个英文字母的大写组成的字符串 
  247.      *  
  248.      */  
  249.     public static final String UPWARD_LETTER_REGEXP = "^[A-Z]+$";  
  250.   
  251.     /** 
  252.      *  
  253.      * 匹配由26个英文字母的小写组成的字符串 
  254.      *  
  255.      */  
  256.     public static final String LOWER_LETTER_REGEXP = "^[a-z]+$";  
  257.   
  258.     /** 
  259.      *  
  260.      * 匹配由数字和26个英文字母组成的字符串 
  261.      *  
  262.      */  
  263.     public static final String LETTER_NUMBER_REGEXP = "^[A-Za-z0-9]+$";  
  264.   
  265.     /** 
  266.      *  
  267.      * 匹配由数字、26个英文字母或者下划线组成的字符串 
  268.      *  
  269.      */  
  270.     public static final String LETTER_NUMBER_UNDERLINE_REGEXP = "^//w+$";  
  271.   
  272.     /** 
  273.      * 大小写敏感的正规表达式批配 
  274.      *  
  275.      * @param source 
  276.      *            批配的源字符串 
  277.      * @param regexp 
  278.      *            批配的正规表达式 
  279.      * @return 如果源字符串符合要求返回真,否则返回假 
  280.      */  
  281.     public static boolean isHardRegexpValidate(String source, String regexp) {  
  282.   
  283.         try {  
  284.             // 用于定义正规表达式对象模板类型  
  285.             PatternCompiler compiler = new Perl5Compiler();  
  286.   
  287.             // 正规表达式比较批配对象  
  288.             PatternMatcher matcher = new Perl5Matcher();  
  289.   
  290.             // 实例大小大小写敏感的正规表达式模板  
  291.             Pattern hardPattern = compiler.compile(regexp);  
  292.   
  293.             // 返回批配结果  
  294.             return matcher.contains(source, hardPattern);  
  295.   
  296.         } catch (MalformedPatternException e) {  
  297.             log.warn(e);  
  298.         }  
  299.   
  300.         return false;  
  301.     }  
  302.   
  303.   
  304. }  

转自【http://www.open-open.com/lib/view/open1376293034241.html】
0
0 0
原创粉丝点击