欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1.需求背景

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

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

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

"^((([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:

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

測試結(jié)果:

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

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

@Pattern的用法

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

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

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

在user傳參或者controller層中的添加@Validated注解進(jìn)行調(diào)用

舉個栗子:

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

下面是常用的正則表達(dá)式

  • 匹配首尾空格的正則表達(dá)式:(^\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]*$"。
  • 只能輸入非零的負(fù)整數(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"。
  • 匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]
  • 匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]
  • 應(yīng)用:計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)
  • String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}
  • 匹配空行的正則表達(dá)式:\n[\s| ]*\r
  • 匹配html標(biāo)簽的正則表達(dá)式:<(.*)>(.*)<\/(.*)>|<(.*)\/>
  • 中文字母數(shù)字下劃線:^[a-zA-Z0-9_\u4e00-\u9fa5]*$

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

相關(guān)文章

  • Spring如何基于aop實現(xiàn)事務(wù)控制

    Spring如何基于aop實現(xiàn)事務(wù)控制

    這篇文章主要介紹了Spring如何基于aop實現(xiàn)事務(wù)控制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java中的源文件、字節(jié)碼文件解讀

    Java中的源文件、字節(jié)碼文件解讀

    這篇文章主要介紹了Java中的源文件、字節(jié)碼文件,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • JavaWeb Session失效時間設(shè)置方法

    JavaWeb Session失效時間設(shè)置方法

    這篇文章主要介紹了JavaWeb Session失效時間設(shè)置方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • Java日常練習(xí)題,每天進(jìn)步一點點(30)

    Java日常練習(xí)題,每天進(jìn)步一點點(30)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • java實現(xiàn)適用于安卓的文件下載線程類

    java實現(xiàn)適用于安卓的文件下載線程類

    本文給大家分享的是java實現(xiàn)適用于安卓的文件下載線程類的代碼,有需要的小伙伴可以參考下
    2015-07-07
  • maven 指定version不生效的問題

    maven 指定version不生效的問題

    這篇文章主要介紹了maven 指定version不生效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解Java正則表達(dá)式語法

    詳解Java正則表達(dá)式語法

    這篇文章主要介紹了Java正則表達(dá)式語法,包括常用正則表達(dá)式、匹配驗證-驗證Email是否正確以及字符串中查詢字符或者字符串,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 實現(xiàn)分布式WebSocket集群的方法

    實現(xiàn)分布式WebSocket集群的方法

    本文總結(jié)出了幾個實現(xiàn)分布式WebSocket集群的辦法,從zuul到spring cloud gateway的不同嘗試,總結(jié)出了這篇文章,希望能幫助到某些人,并且能一起分享這方面的想法與研究
    2022-03-03
  • 原生Java操作兔子隊列RabbitMQ

    原生Java操作兔子隊列RabbitMQ

    這篇文章主要介紹了原生Java操作兔子隊列RabbitMQ,MQ全稱為Message?Queue,即消息隊列,“消息隊列”是在消息的傳輸過程中保存消息的容器,需要的朋友可以參考下
    2023-05-05
  • Java判斷字符串回文的代碼實例

    Java判斷字符串回文的代碼實例

    在本篇文章里小編給各位整理的是一篇關(guān)于Java判斷字符串回文的代碼實例內(nèi)容,需要的朋友們可以跟著學(xué)習(xí)參考下。
    2020-02-02

最新評論