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

    主站蜘蛛池模板: 最近免费mv在线观看动漫| 国产成+人+综合+亚洲专| eeuss免费影院| 亚洲国产天堂久久综合| 国产精品成人亚洲| 日本中文一区二区三区亚洲| 亚洲一区二区三区高清不卡| 无码人妻一区二区三区免费| 亚洲ts人妖网站| 最近免费中文字幕4| 亚洲av日韩综合一区久热| 在线观看免费亚洲| 美女免费视频一区二区三区| 亚洲毛片不卡av在线播放一区| 一个人看的www视频免费在线观看| 亚洲一区二区三区在线视频| 成年免费a级毛片免费看无码| 亚洲国产精品一区二区久久| 1000部拍拍拍18勿入免费凤凰福利| 亚洲综合偷自成人网第页色| 免费jlzzjlzz在线播放视频| 91av免费在线视频| 亚洲天堂一区二区| 日韩欧美一区二区三区免费观看| 国产AV无码专区亚洲AV蜜芽 | 久久国产免费观看精品| 亚洲国产精品一区| 成人一a毛片免费视频| 一级毛片免费播放试看60分钟| 亚洲AV日韩精品久久久久| 欧洲黑大粗无码免费| 成年网站免费入口在线观看| 亚洲AV日韩精品久久久久久久| 女性自慰aⅴ片高清免费| 日韩免费码中文在线观看| 亚洲成人午夜在线| 日本黄色免费观看| 野花香在线视频免费观看大全| 亚洲一区二区观看播放| 国产亚洲精品久久久久秋霞 | 亚洲桃色AV无码|