C++11標準 STLRegex 驗證電子郵件地址

來源:互聯網
上載者:User

  我們最經常遇到的驗證,就是電子郵件地址驗證。網站上常見。各種網頁指令碼也都常用“Regex”(regular expression)對我們輸入的電子郵件地址進行驗證,判斷是否合法。有的還能分解出使用者名稱和網域名稱。現在用C++語言實現一下電子郵件地址驗證程式,用的是C++ 11標準新增加的STLRegex。

  原始碼如下,該代碼已在Visual Studio 2010上驗證通過。g++ 4.6不支援C++ 11的STLRegex,g++ 4.6上編譯可以通過,但執行階段錯誤,拋出regex_error異常。因此,如果要在g++ 4.6上使用Regex,請用GNURegex庫或者用boostRegex庫。

/* * regex.cpp - 用Regex驗證電子郵件地址 * *  C++11標準  STLRegex * * *              Copyright  葉劍飛 2012 * * 編譯命令: *         cl regex.cpp /EHsc /link /out:regex.exe * */#include <iostream>#include <cstdlib>#include <string>#include <regex>  // regular expression Regexusing namespace std;int main ( ){    string email_address;    string user_name, domain_name;    regex pattern("([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)");    // Regex,匹配規則:    // 第1組(即使用者名稱),匹配規則:0至9、A至Z、a至z、底線、點、連字號之中    // 的任一字元,重複一遍或以上    // 中間,一個“@”符號    // 第二組(即網域名稱),匹配規則:0至9或a至z之中的任一字元重複一遍或以上,    // 接著一個點,接著a至z之中的任一字元重複2至3遍(如com或cn等),    // 第二組內部的一組,一個點,接著a至z之中的任一字元重複2遍(如cn或fr等)    // 內部一整組重複零次或一次    // 輸入檔案結尾符(Windows用Ctrl+Z,UNIX用Ctrl+D)結束迴圈    while ( cin >> email_address )     {        if ( regex_match( email_address, pattern ) )        {            cout << "您輸入的電子郵件地址合法" << endl;            // 截取第一組            user_name = regex_replace( email_address, pattern, string("$1") );            // 截取第二組            domain_name = regex_replace( email_address, pattern, string("$2") );            cout << "使用者名稱:" << user_name << endl;            cout << "網域名稱:" << domain_name << endl;            cout << endl;        }        else        {            cout << "您輸入的電子郵件地址不合法" << endl << endl;        }    }    return EXIT_SUCCESS;}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.