Android中常见的正则表达式工具类

的正则表达式工具类:

[java]  view plain  copy
  1. public final class RegexpUtils {  
  2.     private RegexpUtils() {  
  3.     }  
  4.   
  5.     /** 
  6.      * 匹配图象 
  7.      * <p/> 
  8.      * <p/> 
  9.      * 格式: /相对路径/文件名.后缀 (后缀为gif,dmp,png) 
  10.      * <p/> 
  11.      * 匹配 : /forum/head_icon/admini2005111_ff.gif 或 admini2005111.dmp 
  12.      * <p/> 
  13.      * <p/> 
  14.      * 不匹配: c:/admins4512.gif 
  15.      */  
  16.     public static final String ICON_REGEXP = "^(/{0,1}//w){1,}//.(gif|dmp|png|jpg)$|^//w{1,}//.(gif|dmp|png|jpg)$";  
  17.   
  18.     /** 
  19.      * 匹配email地址 
  20.      * <p/> 
  21.      * <p/> 
  22.      * 格式: XXX@XXX.XXX.XX 
  23.      * <p/> 
  24.      * 匹配 : foo@bar.com 或 foobar@foobar.com.au 
  25.      * <p/> 
  26.      * 不匹配: foo@bar 或 $$$@bar.com 
  27.      */  
  28.     public static final String EMAIL_REGEXP = "^([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)*@([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)+[\\.][A-Za-z]{2,3}([\\.][A-Za-z]{2})?$";  
  29.   
  30.     /** 
  31.      * 匹配并提取url 
  32.      * <p/> 
  33.      * <p/> 
  34.      * 格式: XXXX://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX 
  35.      * <p/> 
  36.      * 匹配 : http://www.suncer.com 或news://www 
  37.      * <p/> 
  38.      * 不匹配: c:/window 
  39.      */  
  40.     public static final String URL_REGEXP = "(//w+)://([^/:]+)(://d*)?([^#//s]*)";  
  41.   
  42.     /** 
  43.      * 匹配并提取http 
  44.      * <p/> 
  45.      * 格式: http://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX 或 ftp://XXX.XXX.XXX 或 
  46.      * https://XXX 
  47.      * <p/> 
  48.      * 匹配 : http://www.suncer.com:8080/index.html?login=true 
  49.      * <p/> 
  50.      * 不匹配: news://www 
  51.      */  
  52.     public static final String HTTP_REGEXP = "(http|https|ftp)://([^/:]+)(://d*)?([^#//s]*)";  
  53.   
  54.     /** 
  55.      * 匹配日期 
  56.      * <p/> 
  57.      * <p/> 
  58.      * 格式(首位不为0): XXXX-XX-XX或 XXXX-X-X 
  59.      * <p/> 
  60.      * <p/> 
  61.      * 范围:1900--2099 
  62.      * <p/> 
  63.      * <p/> 
  64.      * 匹配 : 2005-04-04 
  65.      * <p/> 
  66.      * <p/> 
  67.      * 不匹配: 01-01-01 
  68.      */  
  69.     public static final String DATE_BARS_REGEXP = "^((((19){1}|(20){1})\\d{2})|\\d{2})-[0,1]?\\d{1}-[0-3]?\\d{1}$";  
  70.   
  71.     /** 
  72.      * 匹配日期 
  73.      * <p/> 
  74.      * <p/> 
  75.      * 格式: XXXX/XX/XX 
  76.      * <p/> 
  77.      * <p/> 
  78.      * 范围: 
  79.      * <p/> 
  80.      * <p/> 
  81.      * 匹配 : 2005/04/04 
  82.      * <p/> 
  83.      * <p/> 
  84.      * 不匹配: 01/01/01 
  85.      */  
  86.     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)))$";  
  87.   
  88.     /** 
  89.      * 匹配电话 
  90.      * <p/> 
  91.      * <p/> 
  92.      * 格式为: 0XXX-XXXXXX(10-13位首位必须为0) 或0XXX XXXXXXX(10-13位首位必须为0) 或 
  93.      * <p/> 
  94.      * (0XXX)XXXXXXXX(11-14位首位必须为0) 或 XXXXXXXX(6-8位首位不为0) 或 
  95.      * XXXXXXXXXXX(11位首位不为0) 
  96.      * <p/> 
  97.      * <p/> 
  98.      * 匹配 : 0371-123456 或 (0371)1234567 或 (0371)12345678 或 010-123456 或 
  99.      * 010-12345678 或 12345678912 
  100.      * <p/> 
  101.      * <p/> 
  102.      * 不匹配: 1111-134355 或 0123456789 
  103.      */  
  104.     public static final String PHONE_REGEXP = "^[1]([0-9]{2})[0-9]{8}$";  
  105.     /** 
  106.      * 匹配姓名,只能是中文或英文,不能为数字或其他字符,汉字和字母不能同时出现 
  107.      */  
  108.     public static final String NAME_REGEXP = "(([\u4E00-\u9FA5]{2,7})|([a-zA-Z]{3,10}))";  
  109.     /** 
  110.      * 匹配身份证 
  111.      * <p/> 
  112.      * 格式为: XXXXXXXXXX(10位) 或 XXXXXXXXXXXXX(13位) 或 XXXXXXXXXXXXXXX(15位) 或 
  113.      * XXXXXXXXXXXXXXXXXX(18位) 
  114.      * <p/> 
  115.      * 匹配 : 0123456789123 
  116.      * <p/> 
  117.      * 不匹配: 0123456 
  118.      */  
  119.     public static final String ID_CARD_REGEXP = "^//d{10}|//d{13}|//d{15}|//d{18}$";  
  120.   
  121.     /** 
  122.      * 匹配邮编代码 
  123.      * <p/> 
  124.      * 格式为: XXXXXX(6位) 
  125.      * <p/> 
  126.      * 匹配 : 012345 
  127.      * <p/> 
  128.      * 不匹配: 0123456 
  129.      */  
  130.     public static final String ZIP_REGEXP = "^[0-9]{6}$";// 匹配邮编代码  
  131.   
  132.     /** 
  133.      * 不包括特殊字符的匹配 (字符串中不包括符号 数学次方号^ 单引号' 双引号" 分号; 逗号, 帽号: 数学减号- 右尖括号> 左尖括号< 反斜杠/ 
  134.      * 即空格,制表符,回车符等 ) 
  135.      * <p/> 
  136.      * 格式为: x 或 一个一上的字符 
  137.      * <p/> 
  138.      * 匹配 : 012345 
  139.      * <p/> 
  140.      * 不匹配: 0123456 // ;,:-<>//s].+$";// 
  141.      */  
  142.     public static final String NON_SPECIAL_CHAR_REGEXP = "^[^'/";  
  143.     // 匹配邮编代码  
  144.   
  145.     /** 
  146.      * 匹配非负整数(正整数 + 0) 
  147.      */  
  148.     public static final String NON_NEGATIVE_INTEGERS_REGEXP = "^//d+$";  
  149.   
  150.     /** 
  151.      * 匹配不包括零的非负整数(正整数 > 0) 
  152.      */  
  153.     public static final String NON_ZERO_NEGATIVE_INTEGERS_REGEXP = "^[1-9]+//d*$";  
  154.   
  155.     /** 
  156.      * 匹配正整数 
  157.      */  
  158.     public static final String POSITIVE_INTEGER_REGEXP = "^[0-9]*[1-9][0-9]*$";  
  159.   
  160.     /** 
  161.      * 匹配非正整数(负整数 + 0) 
  162.      */  
  163.     public static final String NON_POSITIVE_INTEGERS_REGEXP = "^((-//d+)|(0+))$";  
  164.   
  165.     /** 
  166.      * 匹配负整数 
  167.      */  
  168.     public static final String NEGATIVE_INTEGERS_REGEXP = "^-[0-9]*[1-9][0-9]*$";  
  169.   
  170.     /** 
  171.      * 匹配整数 
  172.      */  
  173.     public static final String INTEGER_REGEXP = "^-?//d+$";  
  174.   
  175.     /** 
  176.      * 匹配非负浮点数(正浮点数 + 0) 
  177.      */  
  178.     public static final String NON_NEGATIVE_RATIONAL_NUMBERS_REGEXP = "^//d+(//.//d+)?$";  
  179.   
  180.     /** 
  181.      * 匹配正浮点数 
  182.      */  
  183.     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]*))$";  
  184.   
  185.     /** 
  186.      * 匹配非正浮点数(负浮点数 + 0) 
  187.      */  
  188.     public static final String NON_POSITIVE_RATIONAL_NUMBERS_REGEXP = "^((-//d+(//.//d+)?)|(0+(//.0+)?))$";  
  189.   
  190.     /** 
  191.      * 匹配负浮点数 
  192.      */  
  193.     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]*)))$";  
  194.   
  195.     /** 
  196.      * 匹配浮点数 
  197.      */  
  198.     public static final String RATIONAL_NUMBERS_REGEXP = "^(-?//d+)(//.//d+)?$";  
  199.   
  200.     /** 
  201.      * 匹配由26个英文字母组成的字符串 
  202.      */  
  203.     public static final String LETTER_REGEXP = "^[A-Za-z]+$";  
  204.   
  205.     /** 
  206.      * 匹配由26个英文字母的大写组成的字符串 
  207.      */  
  208.     public static final String UPWARD_LETTER_REGEXP = "^[A-Z]+$";  
  209.   
  210.     /** 
  211.      * 匹配由26个英文字母的小写组成的字符串 
  212.      */  
  213.     public static final String LOWER_LETTER_REGEXP = "^[a-z]+$";  
  214.   
  215.     /** 
  216.      * 匹配由数字和26个英文字母组成的字符串 
  217.      */  
  218.     public static final String LETTER_NUMBER_REGEXP = "^[A-Za-z0-9]+$";  
  219.   
  220.     /** 
  221.      * 匹配由数字、26个英文字母或者下划线组成的字符串 
  222.      */  
  223.     public static final String LETTER_NUMBER_UNDERLINE_REGEXP = "^//w+$";  
  224.   
  225.     /** 
  226.      * 验证手机号码 
  227.      * 
  228.      * @param mobiles 
  229.      * @return 
  230.      */  
  231.     public static final boolean isMobileNO(String mobiles) {  
  232.         Pattern p = Pattern  
  233.                 .compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");  
  234.         Matcher m = p.matcher(mobiles);  
  235.   
  236.         return m.matches();  
  237.     }  
  238.   
  239.     /** 
  240.      * 验证银卡卡号 
  241.      * 
  242.      * @param cardNo 
  243.      * @return 
  244.      */  
  245.     public static final boolean isBankCard(String cardNo) {  
  246.         Pattern p = Pattern  
  247.                 .compile("^\\d{16,19}$|^\\d{6}[- ]\\d{10,13}$|^\\d{4}[- ]\\d{4}[- ]\\d{4}[- ]\\d{4,7}$");  
  248.         Matcher m = p.matcher(cardNo);  
  249.   
  250.         return m.matches();  
  251.     }  
  252.   
  253.     /** 
  254.      * 身份证验证 
  255.      * 
  256.      * @param idCard 
  257.      * @return 
  258.      */  
  259.     public static final boolean validateIdCard(String idCard) {  
  260.         // 15位和18位身份证号码的正则表达式  
  261.         String regIdCard = "^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$";  
  262.         Pattern p = Pattern.compile(regIdCard);  
  263.         return p.matcher(idCard).matches();  
  264.     }  
  265.   
  266.     /** 
  267.      * 获取当前日期时间 
  268.      * 
  269.      * @return 
  270.      */  
  271.     public static final String getCurrentDateTime() {  
  272.         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhMMss");  
  273.         return sdf.format(new Date());  
  274.     }  
  275.   
  276.     /** 
  277.      * 获取当前日期 
  278.      * 
  279.      * @return 
  280.      */  
  281.     public static final String getCurrentDate() {  
  282.         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");  
  283.         return sdf.format(new Date());  
  284.     }  
  285.   
  286.     /** 
  287.      * 格式化银行卡 
  288.      * 
  289.      * @param cardNo 
  290.      * @return 
  291.      */  
  292.     public static final String formatCard(String cardNo) {  
  293.         String card = "";  
  294.         card = cardNo.substring(04) + " **** **** ";  
  295.         card += cardNo.substring(cardNo.length() - 4);  
  296.         return card;  
  297.     }  
  298.   
  299.     /** 
  300.      * 银行卡后四位 
  301.      * 
  302.      * @param cardNo 
  303.      * @return 
  304.      */  
  305.     public static final String formatCardEndFour(String cardNo) {  
  306.         String card = "";  
  307.         card += cardNo.substring(cardNo.length() - 4);  
  308.         return card;  
  309.     }  
  310.   
  311.     public static final String fomatMoney(float money) {  
  312.         DecimalFormat myformat = new DecimalFormat();  
  313.         if (money == 0) {  
  314.             return "0.00";  
  315.         } else {  
  316.             myformat.applyPattern("##,###.00");  
  317.             return myformat.format(money);  
  318.         }  
  319.     }  
  320.   
  321.     /** 
  322.      * 根据指定的图像路径和大小来获取缩略图 
  323.      */  
  324.     public static final Bitmap getImageToBitmap(String imagePath, int width,  
  325.                                                 int height) {  
  326.         Bitmap bitmap = null;  
  327.         BitmapFactory.Options options = new BitmapFactory.Options();  
  328.         options.inJustDecodeBounds = true;  
  329.         // 获取这个图片的宽和高,注意此处的bitmap为null  
  330.         bitmap = BitmapFactory.decodeFile(imagePath, options);  
  331.         options.inJustDecodeBounds = false// 设为 false  
  332.         // 计算缩放比  
  333.         int h = options.outHeight;  
  334.         int w = options.outWidth;  
  335.         int beWidth = w / width;  
  336.         int beHeight = h / height;  
  337.         int be = 1;  
  338.         if (beWidth < beHeight) {  
  339.             be = beWidth;  
  340.         } else {  
  341.             be = beHeight;  
  342.         }  
  343.         if (be <= 0) {  
  344.             be = 1;  
  345.         }  
  346.         options.inSampleSize = be;  
  347.         // 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false  
  348.         bitmap = BitmapFactory.decodeFile(imagePath, options);  
  349.         return bitmap;  
  350.     }  
  351.   
  352. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值