亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot中@Pattern注解對時間格式校驗方式

 更新時間:2021年09月16日 10:09:08   作者:狂風之力  
這篇文章主要介紹了SpringBoot中@Pattern注解對時間格式校驗方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot @Pattern注解對時間格式校驗

1.需求背景

有一個需求,在前端傳過來的時間格式的字符串進行校驗,是否符合"yyyy-MM-dd HH:mm:ss",在SpringBoot中當然可以用@Datetimeformat注解來進行驗證,但字段的屬性得用Date類型,由于我的項目中該字段用了String類型,需要對類型進行轉換不太符合要求,所有用到了@Pattern注解。

在實體類的字段名上添加@Pattern注解,有個屬性regexp,該屬性的值就是正則表達式。

"yyyy-MM-dd HH:mm:ss"的正則表達式如下:

"^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$"

我們還需用到@Validated注解,該注解使用在controller層的方法參數(shù)中,只有使用該注解,@pattern中的時間格式校驗才起作用,這一點尤其重要。

2.實現(xiàn)案例

entity:

//刪除時間
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$")
    private String deletedAt;
//刪除時間
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$")
    private String deletedAt;

controller:

 /**
     * 添加設備類別
     */
    @ApiOperation(value = "添加設備類別",notes="傳入?yún)?shù)是category對象")
    @PostMapping("/category")
    public int addCategory(@Validated Category category){
            return iCategory.addCategory(category);
    }

測試結果:

當輸入的時間為2020-08-26或2020/08/26 11:22:33,時間格式不符合"yyyy-MM-dd HH:mm:ss",就會出現(xiàn)報錯,如下所示:

只有輸入正確格式的數(shù)據(jù),才能插入成功:

@Pattern的用法

把這個注解加在entity的參數(shù)上,可以選擇分類也可以默認;

關于注解中需要傳的參數(shù):一般默認就填入正則表達式即可,但是java中字符串需要轉義,這個需要注意一下。

@Pattern(regexp = "\\w+$")
private String userName;

在user傳參或者controller層中的添加@Validated注解進行調用

舉個栗子:

public void addUser(@Validated User user){...}

下面是常用的正則表達式

  • 匹配首尾空格的正則表達式:(^\s*)|(\s*$)
  • 整數(shù)或者小數(shù):^[0-9]+\.{0,1}[0-9]{0,2}$
  • 只能輸入數(shù)字:"^[0-9]*$"。
  • 只能輸入n位的數(shù)字:"^\d{n}$"。
  • 只能輸入至少n位的數(shù)字:"^\d{n,}$"。
  • 只能輸入m~n位的數(shù)字:。"^\d{m,n}$"
  • 只能輸入零和非零開頭的數(shù)字:"^(0|[1-9][0-9]*)$"。
  • 只能輸入有兩位小數(shù)的正實數(shù):"^[0-9]+(.[0-9]{2})?$"。
  • 只能輸入有1~3位小數(shù)的正實數(shù):"^[0-9]+(.[0-9]{1,3})?$"。
  • 只能輸入非零的正整數(shù):"^\+?[1-9][0-9]*$"。
  • 只能輸入非零的負整數(shù):"^\-[1-9][]0-9"*$。
  • 只能輸入長度為3的字符:"^.{3}$"。
  • 只能輸入由26個英文字母組成的字符串:"^[A-Za-z]+$"。
  • 只能輸入由26個大寫英文字母組成的字符串:"^[A-Z]+$"。
  • 只能輸入由26個小寫英文字母組成的字符串:"^[a-z]+$"。
  • 只能輸入由數(shù)字和26個英文字母組成的字符串:"^[A-Za-z0-9]+$"。
  • 只能輸入由數(shù)字、26個英文字母或者下劃線組成的字符串:"^\w+$"。
  • 驗證用戶密碼:"^[a-zA-Z]\w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字符、數(shù)字和下劃線。
  • 驗證是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
  • 只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"
  • 驗證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
  • 驗證InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
  • 驗證電話號碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
  • 驗證身份證號(15位或18位數(shù)字):"^\d{15}|\d{18}$"。
  • 驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
  • 驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。
  • 匹配中文字符的正則表達式: [\u4e00-\u9fa5]
  • 匹配雙字節(jié)字符(包括漢字在內):[^\x00-\xff]
  • 應用:計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)
  • String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}
  • 匹配空行的正則表達式:\n[\s| ]*\r
  • 匹配html標簽的正則表達式:<(.*)>(.*)<\/(.*)>|<(.*)\/>
  • 中文字母數(shù)字下劃線:^[a-zA-Z0-9_\u4e00-\u9fa5]*$

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論