zoukankan      html  css  js  c++  java
  • Java正则表达式

      在日常开发中,往往牵涉到用户输入时,我们都会进行一下用户输入参数合法性判断,这就需要用到我们今天讨论的正则表达式知识,我将日常我们经常使用的正则表达式判断,整理打了一个JAR包,方便我们日后开发使用,JAR包下载地址:http://pan.baidu.com/s/1pKh0UQR;JAR包中方法的使用规则:http://pan.baidu.com/s/1skg89D7

      JAR包中的方法:

    /**
     * 正则表达式
     * @author 小破孩
     * 2015-12-22
     */
    public class Matching {
        
        //匹配中文字符
        public static boolean getMatchingChina(String str){
            boolean flag = false;
            String pattern = "[\u4e00-\u9fa5]+";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配英文字符
        public static boolean getMatchingEnglish(String str){
            boolean flag = false;
            String pattern = "[A-Za-z]+";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配英文字符大写
        public static boolean getMatchingEnglishAZ(String str){
            boolean flag = false;
            String pattern = "[A-Z]+";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配英文字符小写
        public static boolean getMatchingEnglishaz(String str){
            boolean flag = false;
            String pattern = "[a-z]+";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配输入数字
        public static boolean getMatchingNumber(String str){
            boolean flag = false;
            String pattern = "\d+";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配输入数字位数介于a->b
        public static boolean getMatchingNumber(String str,int a, int b){
            boolean flag = false;
            String pattern = "\d{"+a+","+b+"}";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配最多输入n位数字
        public static boolean getMatchingNumberMaxLength(String str, int n){
            boolean flag = false;
            String pattern = "\d{"+n+"}";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配至少输入n位数字
        public static boolean getMatchingNumberMinLength(String str, int n){
            boolean flag = false;
            String pattern = "\d{"+n+",}";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配正整数或正小数(保留到小数点后6位)
        public static boolean getMatchingPositiveNumber(String str){
            boolean flag = false;
            String pattern = "([1-9]\d*|0)\.{0,1}[0-9]{1,6}";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配正整数
        public static boolean getMatchingPositiveInteger(String str){
            boolean flag = false;
            String pattern = "[1-9]\d*";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配负整数
        public static boolean getMatchingNegtiveInteger(String str){
            boolean flag = false;
            String pattern = "-[1-9]\d*";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配数字、英文字母、_组成的字符序列
        public static boolean getMatchingPassWord(String str){
            boolean flag = false;
            String pattern = "\w+";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配以英文字母开头,由英文字母、数字、_组成的字符序列,并且指定输入长度
        public static boolean getMatchingPassWord(String str, int a, int b){
            boolean flag = false;
            String pattern = "[a-zA-Z]\w{"+a+","+b+"}";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配邮箱
        public static boolean getMatchingEmail(String str){
            boolean flag = false;
            String pattern = "\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配时分秒(hh:mm:ss)
        public static boolean getMatchingDataHHMMSS(String str){
            boolean flag = false;
            String pattern = "([01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配年月日(yyyy-MM-dd)
        public static boolean getMatchingDataYYYYMMDD(String str){
            boolean flag = false;
            String pattern = "((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配身份证号(18位)
        public static boolean getMatchingCardId(String str){
            boolean flag = false;
            String pattern = "\d{15}|\d{17}[0-9Xx]";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配手机号
        //移动:134、135、136、137、138、139、150、151、157(TD)、158、159、183、187、188 
        //联通:130、131、132、152、155、156、185、186 
        //电信:133、153、180、189、(1349卫通) 
        public static boolean getMatchingPhoneNumber(String str){
            boolean flag = false;
            String pattern = "((13[0-9])|(15[^4,\d])|(18[0,3,5-9]))\d{8}";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配IP
        public static boolean getMatchingIP(String str){
            boolean flag = false;
            String pattern = "(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\."
                                +"(00?\d|1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\."  
                                +"(00?\d|1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\."  
                                +"(00?\d|1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
        
        //匹配HTTP
        public static boolean getMatchingHTTP(String str){
            boolean flag = false;
            String pattern = "http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }
    }

      JAR包使用API:

      免责声明:本JAR包为本人参考网上资料整理而得,如有发现有不妥之处,还望谅解,本人邮箱:1453296946@qq.com,欢迎批评指正。

    类:Matching

    方法均为静态方法

    方法名

    请求参数

    参数解释说明

    返回值

    方法说明

    getMatchingChina(String str)

    str

    待匹配字符串

    true:匹配

    匹配中文字符

    false:不匹配

    getMatchingEnglish(String str)

    str

    待匹配字符串

    true:匹配

    匹配英文字符

    false:不匹配

    getMatchingEnglishAZ(String str)

    str

    待匹配字符串

    true:匹配

    匹配英文字符大写

    false:不匹配

    getMatchingEnglishaz(String str)

    str

    待匹配字符串

    true:匹配

    匹配英文字符小写

    false:不匹配

    getMatchingNumber(String str)

    str

    待匹配字符串

    true:匹配

    匹配输入数字

    false:不匹配

    getMatchingNumber(String str,int a, int b)

    str

    待匹配字符串

    true:匹配

    匹配输入数字位数介于a->b

    a

    最小位数

    false:不匹配

    b

    最大位数

    getMatchingNumberMaxLength(String str, int n)

    str

    待匹配字符串

    true:匹配

    匹配输入数字位数最大为n

    false:不匹配

    getMatchingNumberMinLength(String str, int n)

    str

    待匹配字符串

    true:匹配

    匹配输入数字位数最小为n

    false:不匹配

    getMatchingPositiveNumber(String str)

    str

    待匹配字符串

    true:匹配

    匹配正整数或正小数(保留到小数点后6)

    false:不匹配

    getMatchingPositiveInteger(String str)

    str

    待匹配字符串

    true:匹配

    匹配正整数

    false:不匹配

    getMatchingNegtiveInteger(String str)

    str

    待匹配字符串

    true:匹配

    匹配负整数

    false:不匹配

    getMatchingPassWord(String str)

    str

    待匹配字符串

    true:匹配

    匹配数字、英文字母、_组成的字符序列

    false:不匹配

    getMatchingPassWord(String str, int a, int b)

    str

    待匹配字符串

    true:匹配

    匹配以英文字母开头,由英文字母、数字、_组成的字符序列,并且指定输入长度

    a

    字符匹配长度下限

    false:不匹配

    b

    字符匹配长度上限

    getMatchingEmail(String str)

    str

    待匹配字符串

    true:匹配

    匹配邮箱

    false:不匹配

    getMatchingDataHHMMSS(String str)

    str

    待匹配字符串

    true:匹配

    匹配时分秒(hh:mm:ss)

    false:不匹配

    getMatchingDataYYYYMMDD(String str)

    str

    待匹配字符串

    true:匹配

    匹配年月日(yyyy-MM-dd)

    false:不匹配

    getMatchingCardId(String str)

    str

    待匹配字符串

    true:匹配

    匹配身份证号(18)

    false:不匹配

    getMatchingPhoneNumber(String str)

    str

    待匹配字符串

    true:匹配

    匹配手机号

    移动:134135136137138139150151157(TD)158159183187188 

    联通:130131132152155156185186 

    电信:133153180189、(1349卫通) 

    false:不匹配

    getMatchingIP(String str)

    str

    待匹配字符串

    true:匹配

    匹配IP

    false:不匹配

    getMatchingHTTP(String str)

    str

    待匹配字符串

    true:匹配

    匹配HTTP

    false:不匹配

      以上方法囊括了日常我们经常使用的关于字符匹配的验证,大家可以将JAR包导入的工程bin目录下,通过上面的静态方法进行验证。

        新增判断字符串中是否含有特殊字符方法:

    //配置字符串中是否含有特殊字符(除汉字、英文字母、数字)
        public static boolean getMatching(String str){
            boolean flag = false;
            String pattern = "([a-zA-Z]|[0-9]|[\u4e00-\u9fa5])+";
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            flag = m.matches();
            return flag;
        }

      

  • 相关阅读:
    Java中Runnable和Thread的区别
    JAVA Swing 事件监听
    java 监听机制模拟(JButton按钮监听机制)
    java事件处理机制(自定义事件)
    oracle之检查点(Checkpoint)
    linux内核值shmmax问题
    如何在VMware虚拟机间建立共享磁盘?
    Mysql 不同版本 说明
    mysql 概念和逻辑架构
    mysql 在大型应用中的架构演变
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/5066661.html
Copyright © 2011-2022 走看看