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("") = true
* Validators.isBlank(" ") = true
* Validators.isBlank("bob") = false
* Validators.isBlank(" bob ") = 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("2017-03-01") = true
* Validators.isBlank("2017-0301") = 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("2017-03-01 12:03:01") = true
* Validators.isDateTime("2017-03-01 12:0301") = 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