JAVA正則基本語法(郵箱and日期驗證表達式)


/**
郵箱正則表達式
*/
public static void main(String[] args) {
    // 要驗證的字符串
    String str = "service@aa.com";
    // 郵箱驗證規則
    String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";
    // 編譯正則表達式
    Pattern pattern = Pattern.compile(regEx);
    // 忽略大小寫的寫法
    // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(str);
    // 字符串是否與正則表達式相匹配
    boolean rs = matcher.matches();
    System.out.println(rs);
}
 
/**日期正則表達式【yyyy-MM-dd】【
DD/MM/YYYY
*/
1>.首先需要驗證年份,顯然,年份范圍為
0001 - 9999,匹配YYYY的正則表達式為:
[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-9] 也可以表示為 \d,但 \d 不如 [0-9] 直觀,因此下面我將一直采用
[0-9]<BR><BR>用正則表達式驗證日期的難點有二:一是大小月份的天數不同,二是閏年的考慮。<BR>對於第一個難點,我們首先不考慮閏年,假設2月份都是28天,這樣,月份和日期可以分成三種情況
1、月份為1, 3, 5, 7, 8, 10, 12,天數范圍為 01 - 31,匹配MM-DD的正則表達式為:(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])
2、月份為4, 6, 9, 11,天數范圍為 01-30,匹配MM-DD的正則表達式為:
(0[469]|11)-(0[1-9]|[12][0-9]|30
3、月份為2,考慮平年情況,匹配MM-DD的正則表達式為:02-(0[1-9]|[1][0-9]|2[0-8根據上面的成果,我們可以得到匹配平年日期格式為YYYY-MM-DD的正則表達式
([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])))
接着我們來解決第二個難點:閏年的考慮。根據閏年的定義,我們可以將閏年分為兩類
1、能被4整除但不能被100整除的年份。尋找后兩位的變化規律,可以很快得到下面的正則匹配([0-9]{2})(0[48]|[2468][048]|[13579][26])
2、能被400整除的年份。能被400整除的數肯定能被100整除,因此后兩位肯定是00,我們只要保證前兩位能被4整除即可,相應的正則表達式為:
(0[48]|[2468][048]|[3579][26])00</BLOCKQUOTE></SPAN>閏年的2月份有29天,因此匹配閏年日期格式為YYYY-MM-DD的正則表達式為(([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29最后,將平年和閏年的日期驗證表達式合並,
我們得到最終的驗證日期格式為:
YYYY-MM-DD的正則表達式為:(([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)
DD/MM/YYYY格式的正則驗證表達式為:(((0[1-9]|[12][0-9]|3[01])/((0[13578]|1[02]))|((0[1-9]|[12][0-9]|30)/(0[469]|11))|(0[1-9]|[1][0-9]|2[0-8])/(02))/([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}))|(29/02/(([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00)))
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM