網頁

2017/9/19

Java Regex email郵件格式

Java檢查email格式的regex如下

String regex = "^\\w{1,63}@[a-zA-Z0-9]{2,63}\\.[a-zA-Z]{2,63}(\\.[a-zA-Z]{2,63})?$";

Pattern p = Pattern.compile(regex);
System.out.println(p.matcher("name@mail.com").find());        // true
System.out.println(p.matcher("name@123.com").find());         // true
System.out.println(p.matcher("name@mail1000.com.tw").find()); // true
System.out.println(p.matcher("name@mail.com.tw").find());     // true
System.out.println(p.matcher("name@mail.com.org.tw").find()); // false
System.out.println(p.matcher("name%mail.com").find());        // false
System.out.println(p.matcher("@mail.com").find());            // false
System.out.println(p.matcher("name@mail.00").find());         // false

根據RFC 5321 - 4.5.3.1.3,email的最大長度256字元扣掉前後兩個角括弧<>為254個字元。


下面的是JavaScript的email regex。

String regex = "^\w{1,63}@[a-zA-Z0-9]{2,63}\.[a-zA-Z]{2,63}(\.[a-zA-Z]{2,63})?$";

說明一下代表的意思

\w{1,63}的意思等於[a-zA-Z0-9_]{1,63},就是允許大小寫字母,數字和底線,至少1到63個字。

[a-zA-Z0-9]{2,63}的意思是允許大小寫字母和數字,至少2到63個字

(\.[a-zA-Z]{2,63})?表示一個.後接至少2到63個大小寫字母,而問號?的意思表示括弧內的規則可以存在0個或1個。


參考:

沒有留言:

張貼留言