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:匹配 |
匹配手机号 移动: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目录下,通过上面的静态方法进行验证。
新增判断字符串中是否含有特殊字符方法:
//配置字符串中是否含有特殊字符(除汉字、英文字母、数字) 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; }