邮箱&日期&IP地址&信用卡验证(正则表达式)
使用正则表达式匹配验证,存在不足,希望大家提供更优的验证表达式
package com.qingbyqing.job;import java.util.regex.Matcher;import java.util.regex.Pattern;public class FormValid {public static void w(Object o) {System.out.println(o);}/** * 邮箱验证: */public static boolean isValidEmail(String email) {String regEmail = "^(?:\\w+\\.{1})*\\w+@(\\w+\\.)*\\w+$";Pattern pat = Pattern.compile(regEmail);Matcher mat = pat.matcher(email);if (mat.find()) {w("合法邮箱");return true;}w("邮箱格式错误!");return false;}/** * ip 地址的验证 * */public static boolean isValidIp(String strIp) {String reIp = "\\b((\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])(\\b|\\.)){4}";Pattern com = Pattern.compile(reIp);Matcher mat = com.matcher(strIp);if (mat.find()) {w("IP地址格式正确");return true;}w("Ip地址格式错误");return false;}/** * 验证日期 * */public static boolean isValidDate(String sDate) {String reDate = "(?:[1-9]|0[1-9]|[12]\\d|3[0-1])(\\/|\\-)(?:[1-9]|0[1-9]|1[0-2])(\\/|\\-)(?:19|20\\d\\d)";Pattern com = Pattern.compile(reDate);Matcher mat = com.matcher(sDate);if (mat.find()) {w("日期格式正确");return true;}w("日期格式错误");return false;}/** * 验证信用卡号 * */public static boolean isValidCard(String sCard) {String reCard = "^(4\\d{12}(?:\\d{3})?)$";Pattern com = Pattern.compile(reCard);Matcher mat = com.matcher(sCard);if (mat.find()) {w(reCard);w("格式正确");// 判断是否合法boolean luhn = FormValid.isLuhn(sCard);if (luhn) {w("卡号是合法的");return true;} else {w("卡号不合法");return false;}}w("格式不正确");return false;}/** * luhn算法 * */ public static boolean isLuhn(String strNum){ int oddSum=0; int evenSum=0; boolean isOdd=true; for (int i=strNum.length()-1;i>=0;i--){ char cNum=strNum.charAt(i); int num=Integer.parseInt(cNum+""); System.out.print("第"+i+"个"+"是"+"\t"+num+"\n"); if(isOdd){ oddSum+=num; }else{ num=num*2; if(num>9){ num=num%10+1; } evenSum=evenSum+num; } isOdd=!isOdd; } return ((evenSum+oddSum)%10==0); }/** * 测试 * */public static void main(String args[]) { String email = "qing.qingbyqing@gmail.vip.com";//邮箱测试 FormValid.isValidEmail(email); String strIp="1.10.111.255";//IP地址测试 FormValid.isValidIp(strIp); String sDate="03/03/1911"; FormValid.isValidDate(sDate);//日期测试String strNum = "4432123456788881";w(FormValid.isValidCard(strNum));//信用卡测试}}