文档章节

JAVA中基本格式的校验

merlinlock
 merlinlock
发布于 2017/04/25 16:08
字数 753
阅读 12
收藏 0
public final class ValidationUtil {
	private ValidationUtil(){}
	/**
	 * 手机号的校验 前后空格必须自己去除
	 * @param phoneNumber
	 * @return
	 */
   public static boolean isPhoneNumber(String phoneNumber){
	   boolean bool = Pattern.matches("^[0-9]{11}$", phoneNumber);
	   return bool;
   }
   /**
    * 中文字符传三个字符长度,然后和数据库长度做对比 前后空格必须自己去除
    * 是否超过字符长度
    * @param s
    * @param length
    * @return
    */
   public static boolean isOverLength(String s,int length){
	   boolean bool;
	   int realLength = s.replaceAll("[\u4e00-\u9fa5]", "123").length();
	   if(realLength<= length){
		   bool = true;
	   }else{
		   bool = false;
	   }
	   return bool;
   }
   /**
    * 是否是正整数 前后空格必须自己去除
    * @param s
    * @return
    */
   public static boolean isPositiveInteger(String s){
	   boolean bool = Pattern.matches("^[1-9][0-9]*$", s);
	   return bool;
   }
   /**
    * 是否是负整数 前后空格必须自己去除
    * @param s
    * @return
    */
   public static boolean isNegativeInteger(String s){
	   boolean bool = Pattern.matches("^[-][1-9][0-9]*$", s);
	   return bool;
   }
   /**
    * 是否是非负整数 前后空格必须自己去除
    * @param s
    * @return
    */
   public static boolean isNonNegativeIntegers(String s){
	   if("0".equals(s)){
		   return true;
	   }
	   boolean bool = Pattern.matches("^[1-9][0-9]*$", s);
	   return bool;
   }
   /**
    * 必须是非负数 前后空格必须自己去除
    * 必须精确到小数点后 place位
    * @param s
    * @param place
    * @return
    */
   public static boolean isMustDecimalToN(String s,int place){
	   String regex = "^[0-9]+(\u002E){0,1}[0-9]{"+place+"}$";
	   boolean bool = Pattern.matches(regex, s);
	   return bool;
   }
   /**
    * 必须是非负数 前后空格必须自己去除
    * 最多精确到小数点后 place位
    * @param s
    * @param place
    * @return
    */
   public static boolean isDecimalToN(String s,int place){
	   String regex = "^[0-9]+(\u002E){0,1}[0-9]{0,"+place+"}$";
	   boolean bool = Pattern.matches(regex, s);
	   return bool;
   }
   /**
    * 身份证号码的校验 只做位数的校验 具体规则的校验不知道 前后空格必须自己去除
    * @param s
    * @return
    */
   public static boolean isIDcard(String s){
	   boolean bool = Pattern.matches("^[0-9a-zA-Z]{18}$", s);
	   return bool;
   }
   /**
    * 电子邮箱的验证 前后空格必须自己去除
    * @param s
    * @return
    */
   public static boolean isMailAddress(String s){
	   boolean bool = Pattern.matches("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\u002E[a-zA-Z0-9_-]+)+$", s);
	   return bool;
   }
   /**
    * 日期格式的校验 前后空格必须自己去除
    * 1 'YYYY'格式 只有年(年至少一位)
    * 2 'YYYY-MM'
    * 3 'YYYY-MM-DD'
    * 4 'YYYY-MM-DD HH'
    * 5 'YYYY-MM-DD HH:MM'
    * 6 'YYYY-MM-DD HH:MM:SS'
    * 其余一律 'YYYY-MM-DD HH:MM:SS'
    * @param s
    * @param n
    * @return
    */
   public static boolean isDateFormat(String s, int n){
	   String regex;
	   switch(n){
	   case 1:
		   regex = "^[0-9]{1,4}$";
		   break;
	   case 2:
		   regex = "^[0-9]{1,4}-(1(?![3456789])|0(?!0))[0-9]$";
		   break;
	   case 3:
		   regex = "^[0-9]{1,4}-(1(?![3456789])|0(?!0))[0-9]-[0-9]{2}$";
		   break;
	   case 4:
		   regex = "^[0-9]{1,4}-(1(?![3456789])|0(?!0))[0-9]-[0-9]{2} ([01]|2(?![56789]))[0-9]$";
		   break;
	   case 5:
		   regex = "^[0-9]{1,4}-(1(?![3456789])|0(?!0))[0-9]-[0-9]{2} ([01]|2(?![56789]))[0-9][:][0-5][0-9]$";
		   break;
	   case 6:
		   regex = "^[0-9]{1,4}-(1(?![3456789])|0(?!0))[0-9]-[0-9]{2} ([01]|2(?![56789]))[0-9]([:][0-5][0-9]){2}$";
		   break;
	   default:
		   regex = "^[0-9]{1,4}-(1(?![3456789])|0(?!0))[0-9]-[0-9]{2} ([01]|2(?![56789]))[0-9]([:][0-5][0-9]){2}$";
	   }
	   boolean bool = Pattern.matches(regex, s);
	   if(n>2){
		   int first = s.indexOf("-");
		   int year = Integer.parseInt(s.substring(0, first));
		   int mount = Integer.parseInt(s.substring((first+1), (first+3)));
		   int day = Integer.parseInt(s.substring((first+4), (first+6)));
		   boolean isLeap = false;//是否是闰年的判断
		   if(year%4 == 0){
			   if(year%100 == 0){
				   if(year%400 == 0){
					   isLeap = true;
				   }else{
					   isLeap = false;
				   }
			   }else{
				   isLeap = true;
			   }
		   }
		  if(mount == 2){
			  if(isLeap){
				  if(day>29){
					  bool = false;
				  }
			  }else{
				  if(day>28){
					  bool = false;
				  }
			  }
		  }else if(mount == 4 || mount == 6 || mount == 9 || mount == 11){
			  if(day>30){
				  bool = false;
			  }
		  }else{
			  if(day>31){
				  bool = false;
			  }
		  }
	   }
	   return bool;
   }
}

 

© 著作权归作者所有

merlinlock
粉丝 0
博文 6
码字总数 6592
作品 0
南京
程序员
私信 提问
JVM规范系列第4章:Class文件格式

这一章节讲的是字节码的整个组成格式,读懂了这一章,就读懂了字节码文件。对于这一章的学习,我更推荐作为工具书去查找。最好是找一个最简单的Hello World例子,一个字节一个字节去分析其含...

陈树义
2018/12/19
0
0
SpringBoot | 第八章:统一异常、数据校验处理

前言 在web应用中,请求处理时,出现异常是非常常见的。所以当应用出现各类异常时,进行异常的捕获或者二次处理(比如sql异常正常是不能外抛)是非常必要的,比如在开发对外api服务时,约定了响...

oKong
2018/07/20
0
0
Apache commons (Java常用工具包)简介

Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.html BeanUtils Commons-BeanUtils 提供对 Java...

Coder小兵
2012/02/04
0
0
YinXiangMa_SDK_For_Java_V2.0接口开发者使用说明

一.概述 此文档旨在指导Java网站主如何在自己的网站中植入印象码。 作为Java网站的开发者,仅需要在网站后台进行简单的配置,就可以轻松地在您所搭建的网站上使用印象码,在使用安全、用户体...

wyqwclsn
2013/01/07
0
0
新一代开源配置中心 - Apollo

小贴士 大家好,我是Apollo的主要作者之一 张乐,目前就职于 蚂蚁中间件团队,我们团队现在大力发展开源、金融云等业务。急需对技术热爱的小伙伴加入,无限HC~ 有兴趣的小伙伴可以联系我哦~...

lepdou
2017/04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
20分钟前
2
0
【大数据技术】——Hadoop(1)

什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经...

须臾之余
34分钟前
6
0
比特币从地址逆向计算私钥

区块链 区块链简介 说到比特币,就不得不提区块链。那什么是区块链呢? 区块链本质是一个数据集,只不过数据的组织采用了比较特殊的方式,就是把数据拆分为一块一块的小数据集。 为什么要进行...

trayvon
48分钟前
1
0
TypeScript……真香

写前端或者用 node 写命令行小工具一直采用的 es6 的语法,对于 TypeScript 则是秉持敬而远之的态度,毕竟团队中多推广一门语言所需要花费的精力都是让人望而却步的。所以对于 JavaScript 的...

郁也风
54分钟前
3
0
shell基本案例

1、自定义rm linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做...

寰宇01
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部