CAtlRegExp 使用示例

  #include <atlrx.h>  

    // 检查email
    CAtlString strNewEmail = _T("you email address");
    if ( !strNewEmail.IsEmpty() )
    {
        CAtlRegExp<>  rxEmail;
        rxEmail.Parse(L"^\\a+@\\a+\\.\\a+$");
        CAtlREMatchContext<> mcEmail;
        BOOL bMatchEmail = rxEmail.Match(strNewEmail, &mcEmail);
        if ( !bMatchEmail )
        {           
            // invalid email address
        }
    }

 

    // 检查电话号码
    CAtlString strNewPhone = _T("0755-12345678-123");
    if ( !strNewPhone.IsEmpty() )
    {
        CAtlRegExp<>  rxPhone;
        rxPhone.Parse(L"^\\d+-?\\d+{-?\\d+}?$"); // "^\\d+-?\\d+{?:-?\\d+}?$" 这样不行,为什么
        CAtlREMatchContext<> mcPhone;
        BOOL bMatchPhone = rxPhone.Match(strNewPhone, &mcPhone);
    #ifdef _DEBUG
        for (UINT nGroupIndex = 0; nGroupIndex < mcPhone.m_uNumGroups; ++nGroupIndex)
        {
            const CAtlREMatchContext<>::RECHAR* szStart = 0;
            const CAtlREMatchContext<>::RECHAR* szEnd = 0;
            mcPhone.GetMatch(nGroupIndex, &szStart, &szEnd);
            ptrdiff_t nLength = szEnd - szStart;
        }
    #endif
        if ( !bMatchPhone )
        {      
     // invalid phone number
        }
    }

 

参考: http://www.vckbase.com/index.php/wv/357.html

你可能感兴趣的:(CAtlRegExp 使用示例)