Java中@Pattern注解常用的校驗正則表達式學(xué)習(xí)筆記
1、 前端傳參要求
項目開發(fā)中經(jīng)常會遇到對用戶輸入內(nèi)容的限制,本篇對常用限制做一總結(jié)。如下圖所示,標識字段有嚴格命名限制,用戶輸入校驗這部分工作前端可以做,當然后端也可以通過在實體類中添加注解的方式實現(xiàn)參數(shù)校驗。其底層原理還是攔截器攔截請求,對帶有相關(guān)注解的屬性字段進行處理(非空、大小、長度、內(nèi)容等判斷和驗證)
實體類中代碼如下:
/** * 公司名稱 */ @Pattern(regexp="^[\u4e00-\u9fa5_a-zA-Z0-9]+$",message="公司名稱只能輸入中文字符 字母、數(shù)字") @ApiModelProperty(value = "公司名稱") private String name;
有時系統(tǒng)對用戶名的命名有更多要求,比如用戶名必須要有一個小寫字母,一個大寫字母和一個數(shù)字,并且是6-20位,正則表達式如下:
@Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[A-Za-z0-9]{6,20}$", message = "用戶名錯誤")
2、其他常用正則表達式
2.1 數(shù)字校驗
1 整數(shù)或者小數(shù):"^[0-9]+\.{0,1}[0-9]{0,2}$" 2 只能輸入數(shù)字:"^[0-9]*$" 3 只能輸入零和非零開頭的數(shù)字:"^(0|[1-9][0-9]*)$" 4 只能輸入有兩位小數(shù)的正實數(shù):"^[0-9]+(.[0-9]{2})?$" 5 只能輸入有1~3位小數(shù)的正實數(shù):"^[0-9]+(.[0-9]{1,3})?$" 6 只能輸入非零的正整數(shù):"^\+?[1-9][0-9]*$" 7 只能輸入非零的負整數(shù):"^^-[1-9]+[0-9]*$"
2.2 字符串校驗
只能輸入長度為3的字符:"^.{3}$"。 只能輸入由26個英文字母組成的字符串:"^[A-Za-z]+$" 只能輸入由26個大寫英文字母組成的字符串:"^[A-Z]+$" 只能輸入由26個小寫英文字母組成的字符串:"^[a-z]+$" 只能輸入由數(shù)字和26個英文字母組成的字符串:"^[A-Za-z0-9]+$" 只能輸入由數(shù)字、26個英文字母或者下劃線組成的字符串:"^\w+$"
2.3 月份時間校驗
驗證一年的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"。
2.4 Email校驗
由于各種域名郵箱的多樣性,需要特殊情況特殊對待,限制可以做的嚴格也可以寬松 舉例:zhangsan_123@cetc.com.cn 分析郵件名稱部分: 字母和數(shù)字表示為A-Za-z0-9 下劃線表示為_ 中劃線表示為- 由于名稱是由若干個字母、數(shù)字、下劃線和中劃線組成,所以需要用到+表示多次出現(xiàn) ? 通過分析得出郵件名稱部分表達式為[a-zA-Z0-9_-]+ 分析域名部分: ? 一般域名的規(guī)律為“[N級域名][三級域名.]二級域名.頂級域名”,比如"qq.com"、"www.qq.com"、"mp.weixin.qq.com"、"12-34.com.cn",分析可得域名類似"** .** .** .**"組成。 "**"部分可以表示為[a-zA-Z0-9_-]+ ".**"部分可以表示為\.[a-zA-Z0-9_-]+ 多個".**"可以表示為(\.[a-zA-Z0-9_-]+)+ ? 綜上所述,域名部分可以表示為[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+ ? 最終表達式: ?我們用@符號將郵箱的名稱和域名拼接起來,因此完整的郵箱表達式為 ??^[A-Za-z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 驗證Email: "^[A-Za-z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"
2.5 漢字校驗
只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$" 匹配中文字符的正則表達式:"[\u4e00-\u9fa5]"
2.5 聯(lián)系電話校驗
聯(lián)系電話:@Pattern(regexp = "^[\\d\\*]{7,12}$", message = "聯(lián)系電話輸入有誤") 由于區(qū)號分為3位和四位的,然后座機號碼又分為7位和8位的,所以這里校驗的長度是7-12位,并且這里添加了*表示脫敏的手機號仍然可以通過校驗。
2.5 密碼校驗
密碼:長度為6-32位,并且必須包含數(shù)字、字母、特殊符號中的至少兩種: @Pattern(regexp = "^(?=.*[a-zA-Z0-9].*)(?=.*[a-zA-Z.!@#$%^&*].*)(?=.*[0-9.!@#$%^&*].*).{6,32}$", message = "密碼至少包含數(shù)字,字母和符號的兩種")
總結(jié)
到此這篇關(guān)于Java中@Pattern注解常用的校驗正則表達式學(xué)習(xí)筆記的文章就介紹到這了,更多相關(guān)Java @Pattern注解校驗正則表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringRetry重試機制之@Retryable注解與重試策略詳解
本文將詳細介紹SpringRetry的重試機制,特別是@Retryable注解的使用及各種重試策略的配置,幫助開發(fā)者構(gòu)建更加健壯的應(yīng)用程序,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04Springboot集成Jasypt實現(xiàn)配置文件加密的方法
Jasypt是一個java庫,它允許開發(fā)員以最少的努力為他/她的項目添加基本的加密功能,并且不需要對加密工作原理有深入的了解,這篇文章主要介紹了Springboot集成Jasypt實現(xiàn)配置文件加密,需要的朋友可以參考下2023-04-04MyBatis中如何接收String類型的參數(shù)實現(xiàn)
這篇文章主要介紹了MyBatis中如何接收String類型的參數(shù)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02java構(gòu)建Stream流的多種方式總結(jié)
Java?8引入了Stream流作為一項新的特性,它是用來處理集合數(shù)據(jù)的一種函數(shù)式編程方式,本文為大家整理了多種java構(gòu)建Stream流的方式,希望對大家有所幫助2023-11-11設(shè)置JavaScript自動提示-Eclipse/MyEclipse
自動提示需要2個組件,分別是:ext-4.0.2a.jsb2||spket-1.6.16.jar,需要的朋友可以參考下2016-05-05