2014/10/31

正規表示式 Regexper 及測試使用的小工具


講到 RE 首先推薦這個網站,由 osteele 作者開發的小工具,可以方便的針對程式中使用的正規表示式先行測試,最後還附上使用語法的頁面。

以檢測是否為網卡卡號的表示式為範例:

[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}

http://osteele.com/tools/rework/



另外一各式把正規表示式畫成一個圖,看起來比較容易理解。
http://www.regexper.com/

底下為使用 REGERPER 網站顯示的圖形說明



在 Linux 下可以使用 grep -E 來使用進階的正規表示試驗正,如果使用 grep -e 的話只是用一般型態的正規表示式。地下為 ifconfig 指令找到該指令中 MAC address 位置的正規表示式。




常見的正規表示式
1. 驗證是否為一個合法的日期字串 ex: 2014-10-31

/^(\d{2}(([02468][048])|([13579][26]))\-((((0[13578])|(1[02]))\-((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))\-((0[1-9])|([1-2][0-9])|(30)))|(02\-((0[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))\-((((0[13578])|(1[02]))\-((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))\-((0[1-9])|([1-2][0-9])|(30)))|(02\-((0[1-9])|(1[0-9])|(2[0-8])))))$/

2. Email 簡單的正規表示式
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/

3. ftp http https 網址
/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/

4. 信用卡
credit_card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/

5. RFC 完整的 email 檢查程式,但這已經不只是正規表示式了。
http://dzone.com/snippets/rfc-compliant-email-address





張貼留言