Java正则表达式

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

匹配手机号

移动: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卫通)

false:不匹配

getMatchingIP(String str)

str

待匹配字符串

true:匹配

匹配IP

false:不匹配

getMatchingHTTP(String str)

str

待匹配字符串

true:匹配

匹配HTTP

false:不匹配

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值