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個。
參考:
沒有留言:
張貼留言