正则表达式验证身份证格式,邮箱格式

个人学习总结,供大家参考,不足之处见谅。

提前补充一个用到的知识点

1、Character.getNumericValue(char ch)通常情况下,字符本身可以直接转化为数字值就直接转化。

2、如果该字符不有一个数字值,则返回-1。如果字符具有一个数字值,该值不能被表示为一个非负整数(例如,一个分数值),则返回-2,再将其转换成对应的ASCII码


package test;


public class RegExUtils {

	public static boolean idCard(String no){
		 // 对身份证号进行长度等简单判断
	      if (no == null || no.length() != 18 || !no.matches("\\d{17}[0-9X]"))
	      {
	         return false;
	      }
	      // 1-17位相乘因子数组
	      int[] factor = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
	      // 18位随机码数组
	      char[] random = "10X98765432".toCharArray();
	      // 计算1-17位与相应因子乘积之和
	      int total = 0;
	      for (int i = 0; i < 17; i++)
	      {
	         total += Character.getNumericValue(no.charAt(i)) * factor[i];
	      }
	      // 判断随机码是否相等
	      return random[total % 11] == no.charAt(17);
	   }

	
	public static boolean checkEmail(String email)
	  {// 验证邮箱的正则表达式 
	   String format = "\\p{Alpha}\\w{1,}[@][a-z0-9]{3,}[.]\\p{Lower}{2,}";
	   //p{Alpha}:内容是必选的,和字母字符[\p{Lower}\p{Upper}]等价。如:[email protected]不是合法的。
	   //w{2,15}: 2~15个[a-zA-Z_0-9]字符;w{}内容是必选的。 如:[email protected]是合法的。
	   //[a-z0-9]{3,}:至少三个[a-z0-9]字符,[]内的是必选的;如:[email protected]是不合法的。
	   //[.]:'.'号时必选的; 如:dyh200896@163com是不合法的。
	   //p{Lower}{2,}小写字母,两个以上。如:[email protected]是不合法的。
	   if (email.matches(format))
	    { 
	     return true;// 邮箱名合法,返回true 
	    }
	   else
	    {
	     return false;// 邮箱名不合法,返回false
	    }
	  } 
	 public static void main(String[] args) throws Exception
	 {
		 
		 // 正确
	      System.out.println(idCard("412824199501247719"));
	      // 错误
	      System.out.println(idCard("432831196411150812"));
		 
		  String email = "[email protected]"; // 需要进行验证的邮箱
		   if (checkEmail(email))// 验证邮箱
		   {   
			   System.out.println(email+"\n是合法的邮箱名。");
		   }else
		   {
			   System.out.println(email+"\n不是合法的邮箱名。");
		   }
	 }
	
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章