<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    俊星的BLOG

    JAVA MAIL之email地址處理

    對(duì)于email地址的定義,可以參考RFC822,里面有詳細(xì)的說明。
    1、采用正則表達(dá)式的方式來驗(yàn)證email地址:
    JS處理方式(來自javascript.internet.com的Sandeep V. Tamhankar):

    function checkEmail(emailStr) {
       
    if (emailStr.length == 0{
           
    return true;
       }


        
    var emailPat=/^(.+)@(.+)$/;
        
    // \(\)<>@,;:\\\"\.\[\]
        var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
        // [^\s\(\)<>@,;:\\\
    "\.\[\]]
        
    var validChars="\[^\\s" + specialChars + "\]"
        
    //("[^"]*")
        var quotedUser="(\"[^\"]*\")"
        var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
        // [^\s\(\)<>@,;:\\\
    "\.\[\]]+
        
    var atom=validChars + '+'; 
        
    // ([^\s\(\)<>@,;:\\\"\.\[\]]+|("[^"]*"))
        var word="(" + atom + "|" + quotedUser + ")"
        
    //^([^\s\(\)<>@,;:\\\"\.\[\]]+|("[^"]*"))(\.([^\s\(\)<>@,;:\\\"\.\[\]]+|("[^"]*")))*$
        var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); 
        
    // ^([^\s\(\)<>@,;:\\\"\.\[\]]+|("[^"]*"))(\.([^\s\(\)<>@,;:\\\"\.\[\]]+|("[^"]*")))*$
        var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
        

        
    var matchArray=emailStr.match(emailPat);
       
    if (matchArray == null{
           
    return false;
       }

       
    var user=matchArray[1];
       
    var domain=matchArray[2];
       
    if (user.match(userPat) == null{
           
    return false;
       }

       
    var IPArray = domain.match(ipDomainPat);
       
    if (IPArray != null{
           
    for (var i = 1; i <= 4; i++{
              
    if (IPArray[i] > 255{
                 
    return false;
              }

           }

           
    return true;
       }

       
    var domainArray=domain.match(domainPat);
       
    if (domainArray == null{
           
    return false;
       }

       
    var atomPat=new RegExp(atom,"g");
       
    var domArr=domain.match(atomPat);
       
    var len=domArr.length;
       
    if ((domArr[domArr.length-1].length < 2||
           (domArr[domArr.length
    -1].length > 3)) {
           
    return false;
       }

       
    if (len < 2{
           
    return false;
       }

       
    return true;
    }

    下面是我的java實(shí)現(xiàn):

        public static String SPECIAL_CHARS = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
        public static String VALID_CHARS = "[^\\s" + SPECIAL_CHARS + "]";
        
    public static String QUOTED_USER = "(\"[^\"]*\")";
        public static String ATOM = VALID_CHARS + "+";
        
    public static String WORD = "(" + ATOM + "|" + QUOTED_USER + ")";

        
    public static String EMAIL_PATTERN = "^(.+)@(.+)$";
        
    public static String IP_DOMAIN_PATTERN = "^(\\d{1,3}).(\\d{1,3}).(\\d{1,3}).(\\d{1,3})$";
        
    public static String USER_PATTERN = "^" + WORD + "(\\." + WORD + ")*$";
        
    public static String DOMAIN_PATTERN = "^" + ATOM + "(\\." + ATOM + ")*$";
        
    public static String LEGAL_ASCII_PATTERN = "^[\\0000-\\0177]+$";

        
    public static String SINGLE_EMAIL_PATTERN = "(" + ATOM + "(\\." + ATOM + ")*@" + ATOM
                
    + "(\\." + ATOM + ")*)";

        
    public static boolean isValid(String input) {
            
    if (input == null{
                
    return false;
            }

            
    if (!Pattern.matches(LEGAL_ASCII_PATTERN, input)) {
                
    return false;
            }

            Matcher email 
    = Pattern.compile(EMAIL_PATTERN).matcher(input);
            
    if (!email.matches()) {
                
    return false;
            }

            
    if (!Pattern.matches(USER_PATTERN, email.group(1))) {
                
    return false;
            }

            String domain 
    = email.group(2);
            Matcher ips 
    = Pattern.compile(IP_DOMAIN_PATTERN).matcher(domain);
            
    if (ips.matches()) {
                
    for (int i = 1; i <= 4; i++{
                    
    if (Integer.parseInt(ips.group(i)) > 255{
                        
    return false;
                    }

                }

                
    return true;
            }

            
    if (!Pattern.matches(DOMAIN_PATTERN, domain)) {
                
    return false;
            }

            
    return true;

        }


        
    public static void main(String[] args) {
            List
    <String> list = new ArrayList<String>();
            list.add(
    "test@test.com");
            list.add(
    "te%$#st@test.com");
            list.add(
    "test@127.0.0.1");
            list.add(
    "test@127.258.0.1");
            list.add(
    "te我的家@test.com test2@test.com");
            list.add(
    "Alfred.Neuman@BBN-TENEXA");
            list.add(
    "\"George,Ted\"@Group.Arpanet");
            list.add(
    "Wilt(the Stilt)Chamberlain@NBA.US goodjob@test.com");
            
    for (String str : list) {
                System.out.println(isValid(str));
            }

            System.out.println();

            
    // 從輸入字符串中提取電子郵件地址
            Pattern ascill = Pattern.compile(LEGAL_ASCII_PATTERN);
            Pattern p 
    = Pattern.compile(SINGLE_EMAIL_PATTERN);
            Matcher m 
    = p.matcher("");
            String temp 
    = null;
            
    for (String str : list) {
                m.reset(str);
                
    while (m.find()) {
                    temp 
    = m.group();
                    
    if (ascill.matcher(temp).matches()) {
                        System.out.println(temp);
                    }

                }

            }

        }

    運(yùn)行結(jié)果:

    true
    true
    true
    false
    false
    true
    true
    false

    test@test.com
    te
    %$#st@test.com
    test@
    127.0.0.1
    test@
    127.258.0.1
    test2@test.com
    Alfred.Neuman@BBN
    -TENEXA
    Chamberlain@NBA.US
    goodjob@test.com

     

    posted on 2009-04-23 21:16 俊星 閱讀(677) 評(píng)論(0)  編輯  收藏 所屬分類: 代碼庫

    主站蜘蛛池模板: 亚洲av无一区二区三区| 国产亚洲成av人片在线观看| 成人黄18免费视频| 无码av免费毛片一区二区 | 亚洲天堂男人天堂| 亚洲AV无码一区二区乱子伦| 久久久久久久尹人综合网亚洲| 最新精品亚洲成a人在线观看| 亚洲国产精品成人AV在线| 亚洲高清有码中文字| 国产精品亚洲综合五月天| 亚洲精品又粗又大又爽A片| 老牛精品亚洲成av人片| 水蜜桃视频在线观看免费| 香蕉视频在线免费看| 久久福利青草精品资源站免费| 国产午夜精品久久久久免费视| 亚洲一区免费观看| 免费大片黄在线观看yw| 免费看AV毛片一区二区三区| 四虎影视在线永久免费观看| 亚洲人成色7777在线观看不卡| 亚洲人JIZZ日本人| 亚洲第一页在线视频| 亚洲最大中文字幕无码网站| 成人婷婷网色偷偷亚洲男人的天堂| 免费一级毛片在线播放视频免费观看永久| 成人免费网站久久久| 久久这里只精品国产免费10 | 亚洲AV日韩AV一区二区三曲| 国产天堂亚洲国产碰碰| 一级毛片免费全部播放| 午夜精品免费在线观看| 一个人免费观看视频www| 免费乱码中文字幕网站| 久久久久亚洲av无码专区蜜芽| 亚洲国产精品综合久久久| 亚洲av无码专区在线电影| 一级午夜免费视频| 亚洲免费观看网站| 免费国产综合视频在线看|