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

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

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

    俊星的BLOG

    JAVA MAIL之email地址處理

    對于email地址的定義,可以參考RFC822,里面有詳細的說明。
    1、采用正則表達式的方式來驗證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實現:

        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);
                    }

                }

            }

        }

    運行結果:

    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 俊星 閱讀(681) 評論(0)  編輯  收藏 所屬分類: 代碼庫

    主站蜘蛛池模板: 国产午夜精品久久久久免费视| 免费一级特黄特色大片| 日韩免费无码视频一区二区三区| 亚洲国产精品自在拍在线播放 | 久久久久亚洲AV无码专区首| 国产h视频在线观看免费| 亚洲黄色在线电影| 日本不卡免费新一区二区三区| 久久久亚洲精品国产| 无码av免费网站| 国产成人精品免费视频软件| 亚洲AV无码国产一区二区三区| 色播在线永久免费视频| 在线观看国产一区亚洲bd| yy6080久久亚洲精品| 国产免费黄色无码视频| 亚洲成年轻人电影网站www| 最近新韩国日本免费观看| 亚洲欧洲无码AV不卡在线| 国产精品国产免费无码专区不卡| 黄色免费网址在线观看| 亚洲欧洲精品无码AV| 亚欧在线精品免费观看一区 | 亚洲av日韩精品久久久久久a| 永久黄网站色视频免费直播| 午夜在线亚洲男人午在线| 亚洲精品无码专区久久久| h片在线免费观看| 性色av极品无码专区亚洲| 国产亚洲午夜高清国产拍精品 | 100000免费啪啪18免进| 国产亚洲欧洲精品| 97性无码区免费| 边摸边吃奶边做爽免费视频99 | 中文字幕在线视频免费| 亚洲美女色在线欧洲美女| 日韩在线看片免费人成视频播放| 中文字幕免费在线视频| 亚洲18在线天美| 国产亚洲一区二区三区在线| 无码人妻一区二区三区免费手机|