1. 程式人生 > >Java引數校驗util

Java引數校驗util

package com.wellness.platfront.common.util;

import java.util.Collection;
import java.util.Map;
import java.util.regex.Pattern;

public class Validators {
     /**
     * 簡體中文的正則表示式。
     */
    private static final String REGEX_SIMPLE_CHINESE = "^[\u4E00-\u9FA5]+$";

    /**
     * 字母數字的正則表示式。
     */
    private
static final String REGEX_ALPHANUMERIC = "[a-zA-Z0-9]+"; /** * 整數或浮點數的正則表示式。 */ private static final String REGEX_NUMERIC = "(\\+|-){0,1}(\\d+)([.]?)(\\d*)"; /** * 身份證號碼的正則表示式。 */ private static final String REGEX_ID_CARD = "(\\d{14}|\\d{17})(\\d|x|X)"; /** * 電子郵箱的正則表示式。 */
private static final String REGEX_EMAIL = "[email protected]+\\.[a-z]+"; /** * 判斷字串是否只包含字母和數字. * * @param str 字串 * @return 如果字串只包含字母和數字, 則返回 <code>true</code>, 否則返回 <code>false</code>. */ public static boolean isAlphanumeric(String str) { return
isRegexMatch(str, REGEX_ALPHANUMERIC); } /** * Checks if a String is whitespace, empty ("") or null. * Validators.isBlank(null) = true * Validators.isBlank(&quot;&quot;) = true * Validators.isBlank(&quot; &quot;) = true * Validators.isBlank(&quot;bob&quot;) = false * Validators.isBlank(&quot; bob &quot;) = false * @param str the String to check, may be null * @return <code>true</code> if the String is null, empty or whitespace */ public static boolean isBlank(String str) { int strLen; if (str == null || (strLen = str.length()) == 0) { return true; } for (int i = 0; i < strLen; i++) { if ((Character.isWhitespace(str.charAt(i)) == false)) { return false; } } return true; } /** * 是否是合法的日期字串(類似格式:2017-03-01是合法的) * Validators.isBlank(&quot;2017-03-01&quot;) = true * Validators.isBlank(&quot;2017-0301&quot;) = false * @param str 日期字串 * @return 是true,否則false */ public static boolean isDate(String str) { if (isEmpty(str) || str.length() > 10) { return false; } String[] items = str.split("-"); if (items.length != 3) { return false; } if (!isNumber(items[0], 1900, 9999) || !isNumber(items[1], 1, 12)) { return false; } int year = Integer.parseInt(items[0]); int month = Integer.parseInt(items[1]); return isNumber(items[2], 1, DateUtil.getMaxDayOfMonth(year, month - 1)); } /** * 是否是合法的日期時間字串 * Validators.isDateTime(&quot;2017-03-01 12:03:01&quot;) = true * Validators.isDateTime(&quot;2017-03-01 12:0301&quot;) = false * @param str 日期時間字串 * @return 是true,否則false */ public static boolean isDateTime(String str) { if (isEmpty(str) || str.length() > 20) { return false; } String[] items = str.split(" "); if (items.length != 2) { return false; } return isDate(items[0]) && isTime(items[1]); } /** * 判斷字串是否是合法的電子郵箱地址. * * @param str 字串 * @return 是true,否則false */ public static boolean isEmail(String str) { return isRegexMatch(str, REGEX_EMAIL); } /** * 當陣列為<code>null</code>, 或者長度為0, 或者長度為1且元素的值為<code>null</code>時返回 <code>true</code>. * * @param args * @return true/false */ public static boolean isEmpty(Object[] args) { return args == null || args.length == 0 || (args.length == 1 && args[0] == null); } /** * 字串是否為Empty,null和空格都算是Empty * * @param str 字串 * @return true/false */ public static boolean isEmpty(String str) { return str == null || str.trim().length() == 0; } /** * 判斷集合是否為空。 * * @param <T> 集合泛型 * @param collection 集合物件 * @return 當集合物件為 <code>null</code> 或者長度為零時返回 <code>true</code>,否則返回 <code>false</code>。 */ public static <T> boolean isEmpty(Collection<T> collection) { return collection == null || collection.isEmpty(); } /** * 判斷Map是否為空 * * @param map Map物件 * @param <K> * @param <V> * @return 當Map物件為 <code>null</code> 或者元素為空是返回 <code>true</code>,否則返回 <code>false</code>。 */ public static <K, V> boolean isEmptyMap(Map<K, V> map) { return map == null || map.isEmpty(); } /** * <p> * Validating for ID card number. * </p> * * @param str string to be validated * @return If the str is valid ID card number return <code>true</code>, otherwise return <code>false</code>. */ public static boolean isIdCardNumber(String str) { // 15位或18數字, 14數字加x(X)字元或17數字加x(X)字元才是合法的 return isRegexMatch(str, REGEX_ID_CARD); } /** * 是否為數字的字串。 * * @param str 字串 * @return true/false */ public static boolean isNumber(String str) { if (isEmpty(str)) { return false; } for (int i = 0; i < str.length(); i++) { if (str.charAt(i) > '9' || str.charAt(i) < '0') { return false; } } return true; } /** * 是否是固定範圍內的數字的字串 * * @param str * @param min * @param max * @return true/false */ public static boolean isNumber(String str, int min, int max) { if (!isNumber(str)) { return false; } int number = Integer.parseInt(str); return number >= min && number <= max; } /** * 判斷字元是否為整數或浮點數. <br> * * @param str 字串 * @return 若為整數或浮點數則返回 <code>true</code>, 否則返回 <code>false</code> */ public static boolean isNumeric(String str) { return isRegexMatch(str, REGEX_NUMERIC); } /** * 判斷字元是否為符合精度要求的整數或浮點數。 * * @param str 字串 * @param fractionNum 小數部分的最多允許的位數 * @return 若為整數或浮點數則返回 <code>true</code>, 否則返回 <code>false</code> */ public static boolean isNumeric(String str, int fractionNum) { if (isEmpty(str)) { return false; } // 整數或浮點數 String regex = "(\\+|-){0,1}(\\d+)([.]?)(\\d{0," + fractionNum + "})"; return Pattern.matches(regex, str); } /** * 判斷是否是合法的郵編 * * @param str 字串 * @return true/false */ public static boolean isPostcode(String str) { if (isEmpty(str)) { return false; } if (str.length() != 6 || !Validators.isNumber(str)) { return false; } return true; } /** * 判斷是否是固定長度範圍內的字串 * * @param str * @param minLength * @param maxLength * @return true/false */ public static boolean isString(String str, int minLength, int maxLength) { if (str == null) { return false; } if (minLength < 0) { return str.length() <= maxLength; } else if (maxLength < 0) { return str.length() >= minLength; } else { return str.length() >= minLength && str.length() <= maxLength; } } /** * 判斷是否是合法的時間字串。 * * @param str 字串 * @return true/false */ public static boolean isTime(String str) { if (isEmpty(str) || str.length() > 8) { return false; } String[] items = str.split(":"); if (items.length != 2 && items.length != 3) { return false; } for (int i = 0; i < items.length; i++) { if (items[i].length() != 2 && items[i].length() != 1) { return false; } } return !(!isNumber(items[0], 0, 23) || !isNumber(items[1], 0, 59) || (items.length == 3 && !isNumber(items[2], 0, 59))); } /** * 是否是簡體中文字串。 * * @param str 字串 * @return true/false */ public static boolean isSimpleChinese(String str) { return isRegexMatch(str, REGEX_SIMPLE_CHINESE); } /** * 判斷字串是否匹配了正則表示式。 * * @param str 字串 * @param regex 正則表示式 * @return true/false */ public static boolean isRegexMatch(String str, String regex) { return str != null && str.matches(regex); } }

相關推薦

Java引數util

package com.wellness.platfront.common.util; import java.util.Collection; import java.util.Map; import java.util.regex.Pattern; pu

Java Bean Validation 引數

引數校驗是我們程式開發中必不可少的過程。使用者在前端頁面上填寫表單時,前端js程式會校驗引數的合法性,當資料到了後端,為了防止惡意操作,保持程式的健壯性,後端同樣需要對資料進行校驗。後端引數校驗最簡單的做法是直接在業務方法裡面進行判斷,當判斷成功之後再繼續往下執行。但這樣帶給我們的是程式碼的耦合,冗

java方法引數實踐

     在 spring 的validation 驗證框架還沒有釋出出來,怎麼很優雅地對引數合法性做校驗呢 ? 有兩種時間方式: (1) result = method1(); if (result is error){ //根據返回結果判斷是否

java註解方式引數

1、註解類NotEmpty.java空值校驗 package com.cmbc.umm.core.common.annotation; import java.lang.annotation.Documented; import java.lang.an

簡單易用的引數和版本校方式(java

步驟是:配置資料校驗規則(多條)>>>>在控制器上新增校驗註解>>>>使用攔截器攔截校驗引數(獲取註解,初始化校驗規則(第一次),取出引數) 我的專案中使用的MVC框架為Jfinal框架,其他框架也適用只需要將攔截器部分修改即

自己寫的java工具類(包含序列化,引數,判空,HashMap,分頁計算)

package org.xx.xx import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutput

Vue 元件引數與非 props 特性

元件的引數校驗:父元件通過屬性傳遞給子元件資料,子元件有權對這些資料進行約束,這就是引數校驗。 如下,簡單的引數校驗。 <div id="root"> <child content="hello world"></child> <!-- 下

日誌資訊新增和引數

1:在類中要新增日誌資訊: private static final Logger log = LogManager.getLogger(ShopCartAction.class); log.info();//普通訊息 log.error();//錯誤資訊列印 log.debug()

springmvc、springboot 引數

引數校驗在專案中是必不可少的,不僅前端需要校驗,為了程式的可靠性,後端也需要對引數進行有效性的校驗。下面將介紹在springmvc或springboot專案中引數校驗的方法 準備工作: 引入校驗需要用到的依賴    首先放上我們的測試物件 方法一、

Spring基礎系列-引數

原創作品,可以轉載,但是請標註出處地址:https://www.cnblogs.com/V1haoge/p/9953744.html Spring中使用引數校驗 概述 ​ JSR 303中提出了Bean Validation,表示JavaBean的校驗,Hibernate Validation是其具體實

SpringBoot引數--List型別

一般我們定義了DTO來接收引數,然後使用@validated來驗證DTO裡面的校驗規則。當我們的介面接收的引數為List<E>時,可以使用本文的方法進行校驗。 包含驗證規則的實體類: import io.swagger.annotations.ApiModel; i

SpringMVC自定義註解進行引數

在我的另一篇部落格中(SpringMVC),學習瞭如何使用Spring MVC結合Hibernate的校驗框架validation(它和hibernate沒有任何關係)對引數進行校驗。在實際專案中,引數的校驗邏輯可能比較複雜,這時我們可以自定義註解來實現引數校驗,下面是一個簡單的例子。 po

ssm引數

方法一:使用hibernate-validate框架,使用起來較為麻煩(SpringMVC官方推薦); 方法二:使用aop面向切面和自定義註解; 攔截器與aop:      aop可以取得被代理方法的物件和引數,而攔截器需要從請求中取值在校驗,且校驗規

springboot 統一引數配置

採坑 1號坑: 引數長度校驗時特殊字元經過url編碼時 1位變3位長度校驗會出現問題 思路 通過全域性異常處理器 來攔截引數校驗的異常 進行統一的引數校驗處理 步驟 匯入jar包 <dependency> <groupId>org.springframework.b

SpringMVC自定義註解進行引數(以列舉值是否合法為例)

pom引入springMVC依賴,以springboot專案為例 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-

Spring Boot MVC 引數

文章目錄 Spring Boot Validate 常用註解 使用說明 基本使用 實現分組校驗 處理校驗結果 自定義校驗註解 配置校驗提示資訊 手動進行校驗

統一認證加密及簽名引數

1 、openssl //aes加密 $key = '7dD11GshBatrxKdt'; $input = '13579265781'; //aes解密 $encrypted_value = openssl_encrypt($input, 'AES-128-ECB', $key, 1); echo

服務端json引數神器Json Schema

目錄 json簡介 JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standar

Spring Boot 使用hibernate validator進行引數

demo 實體類 public class UserBean { @NotBlank(message="使用者名稱不能為空") private String userName; @NotBlank(message="年齡不能為空") @P

Validation 引數

這裡是修真院後端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】 八個方面深度解析後端知識/技能,本篇分享的是: 【Validation 引數校驗 】 【修真院java 小課堂】 Validati