Java常用正则表达式验证类完整实例【邮箱、URL、IP、电话、身份证等】
本文实例讲述了Java常用正则表达式验证类。分享给大家供大家参考,具体如下:
packagecom.fsti.icop.util.regexp;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicfinalclassRegExpValidatorUtils{
/**
*验证邮箱
*
*@param待验证的字符串
*@return如果是符合的字符串,返回true,否则为false
*/
publicstaticbooleanisEmail(Stringstr){
Stringregex="^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
returnmatch(regex,str);
}
/**
*验证IP地址
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanisIP(Stringstr){
Stringnum="(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";
Stringregex="^"+num+"\\."+num+"\\."+num+"\\."+num+"$";
returnmatch(regex,str);
}
/**
*验证网址Url
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsUrl(Stringstr){
Stringregex="http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?";
returnmatch(regex,str);
}
/**
*验证电话号码
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsTelephone(Stringstr){
Stringregex="^(\\d{3,4}-)?\\d{6,8}$";
returnmatch(regex,str);
}
/**
*验证输入密码条件(字符与数据同时出现)
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsPassword(Stringstr){
Stringregex="[A-Za-z]+[0-9]";
returnmatch(regex,str);
}
/**
*验证输入密码长度(6-18位)
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsPasswLength(Stringstr){
Stringregex="^\\d{6,18}$";
returnmatch(regex,str);
}
/**
*验证输入邮政编号
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsPostalcode(Stringstr){
Stringregex="^\\d{6}$";
returnmatch(regex,str);
}
/**
*验证输入手机号码
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsHandset(Stringstr){
Stringregex="^[1]+[3,5]+\\d{9}$";
returnmatch(regex,str);
}
/**
*验证输入身份证号
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsIDcard(Stringstr){
Stringregex="(^\\d{18}$)|(^\\d{15}$)";
returnmatch(regex,str);
}
/**
*验证输入两位小数
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsDecimal(Stringstr){
Stringregex="^[0-9]+(.[0-9]{2})?$";
returnmatch(regex,str);
}
/**
*验证输入一年的12个月
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsMonth(Stringstr){
Stringregex="^(0?[[1-9]|1[0-2])$";
returnmatch(regex,str);
}
/**
*验证输入一个月的31天
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsDay(Stringstr){
Stringregex="^((0?[1-9])|((1|2)[0-9])|30|31)$";
returnmatch(regex,str);
}
/**
*验证日期时间
*
*@param待验证的字符串
*@return如果是符合网址格式的字符串,返回true,否则为false
*/
publicstaticbooleanisDate(Stringstr){
//严格验证时间格式的(匹配[2002-01-31],[1997-04-30],
//[2004-01-01])不匹配([2002-01-32],[2003-02-29],[04-01-01])
//Stringregex=
//"^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$";
//没加时间验证的YYYY-MM-DD
//Stringregex=
//"^((((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-))$";
//加了时间验证的YYYY-MM-DD00:00:00
Stringregex="^((((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-))(20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$";
returnmatch(regex,str);
}
/**
*验证数字输入
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsNumber(Stringstr){
Stringregex="^[0-9]*$";
returnmatch(regex,str);
}
/**
*验证非零的正整数
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsIntNumber(Stringstr){
Stringregex="^\\+?[1-9][0-9]*$";
returnmatch(regex,str);
}
/**
*验证大写字母
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsUpChar(Stringstr){
Stringregex="^[A-Z]+$";
returnmatch(regex,str);
}
/**
*验证小写字母
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsLowChar(Stringstr){
Stringregex="^[a-z]+$";
returnmatch(regex,str);
}
/**
*验证验证输入字母
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsLetter(Stringstr){
Stringregex="^[A-Za-z]+$";
returnmatch(regex,str);
}
/**
*验证验证输入汉字
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsChinese(Stringstr){
Stringregex="^[\u4e00-\u9fa5],{0,}$";
returnmatch(regex,str);
}
/**
*验证验证输入字符串
*
*@param待验证的字符串
*@return如果是符合格式的字符串,返回true,否则为false
*/
publicstaticbooleanIsLength(Stringstr){
Stringregex="^.{8,}$";
returnmatch(regex,str);
}
/**
*@paramregex
*正则表达式字符串
*@paramstr
*要匹配的字符串
*@return如果str符合regex的正则表达式格式,返回true,否则返回false;
*/
privatestaticbooleanmatch(Stringregex,Stringstr){
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
returnmatcher.matches();
}
//3.检查字符串重复出现的词
//
//privatevoidbtnWord_Click(objectsender,EventArgse)
//{
//System.Text.RegularExpressions.MatchCollectionmatches=
//System.Text.RegularExpressions.Regex.Matches(label1.Text,
//
//@"\b(?\w+)\s+(\k)\b",
//System.Text.RegularExpressions.RegexOptions.Compiled|
//System.Text.RegularExpressions.RegexOptions.IgnoreCase);
//if(matches.Count!=0)
//{
//foreach(System.Text.RegularExpressions.Matchmatchinmatches)
//{
//stringword=match.Groups["word"].Value;
//MessageBox.Show(word.ToString(),"英文单词");
//}
//}
//else{MessageBox.Show("没有重复的单词");}
//
//
//}
//
//4.替换字符串
//
//privatevoidbutton1_Click(objectsender,EventArgse)
//{
//
//stringstrResult=
//System.Text.RegularExpressions.Regex.Replace(textBox1.Text,
//@"[A-Za-z]\*?",textBox2.Text);
//MessageBox.Show("替换前字符:"+"\n"+textBox1.Text+"\n"+"替换的字符:"+"\n"
//+textBox2.Text+"\n"+
//
//"替换后的字符:"+"\n"+strResult,"替换");
//
//}
//
//5.拆分字符串
//
//privatevoidbutton1_Click(objectsender,EventArgse)
//{
////实例:甲025-8343243乙0755-2228382丙029-32983298389289328932893289丁
//foreach(stringsin
//System.Text.RegularExpressions.Regex.Split(textBox1.Text,@"\d{3,4}-\d*"))
//{
//textBox2.Text+=s;//依次输出"甲乙丙丁"
//}
//
//}
}
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。