最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中@Pattern注解對時(shí)間格式校驗(yàn)方式

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

SpringBoot @Pattern注解對時(shí)間格式校驗(yàn)

1.需求背景

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

在實(shí)體類的字段名上添加@Pattern注解,有個(gè)屬性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中的時(shí)間格式校驗(yàn)才起作用,這一點(diǎn)尤其重要。

2.實(shí)現(xiàn)案例

entity:

//刪除時(shí)間
    @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;
//刪除時(shí)間
    @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)輸入的時(shí)間為2020-08-26或2020/08/26 11:22:33,時(shí)間格式不符合"yyyy-MM-dd HH:mm:ss",就會出現(xiàn)報(bào)錯(cuò),如下所示:

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

@Pattern的用法

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

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

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

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

舉個(gè)栗子:

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

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

相關(guān)文章

最新評論

永泰县| 日土县| 吉林市| 昌平区| 泰兴市| 洪雅县| 中阳县| 玉林市| 兴和县| 兴安县| 股票| 巴南区| 城市| 交城县| 错那县| 霸州市| 前郭尔| 会理县| 尼勒克县| 丰城市| 台北县| 邻水| 都昌县| 沙湾县| 沛县| 精河县| 武穴市| 林口县| 华池县| 杭锦后旗| 中阳县| 安龙县| 大兴区| 湖南省| 宁都县| 中西区| 枣强县| 固镇县| 安化县| 昌黎县| 苏尼特左旗|