ATL正則表達式實例

1、匹配數字、字符、下劃線

BOOL RegexMatch(CString sourceStr)
{
    CAtlRegExp<CAtlRECharTraitsW> reRule;
    wchar_t *wt = L"^[A-Za-z0-9-_]+$"; //只能輸入由數字和26個英文字母和'-''_'組成的字符串
    REParseError status = reRule.Parse((const ATL::CAtlRegExp<CAtlRECharTraitsW>::RECHAR *)wt);
    if (REPARSE_ERROR_OK != status){
        return FALSE; //正則表達式解析錯誤
    }

    CAtlREMatchContext<CAtlRECharTraitsW> mcRule;
    wt = (wchar_t *)(LPCTSTR)sourceStr;
    if (!reRule.Match((const ATL::CAtlRegExp<CAtlRECharTraitsW>::RECHAR *)wt,&mcRule)){
        return FALSE; //匹配錯誤
    }
    return TRUE; //匹配成功
}

2、匹配鍵盤可顯字符

BOOL RegexMatchKeyChar(CString sourceStr)
{
    CAtlRegExp<CAtlRECharTraitsW> reRule;
    wchar_t *wt = L"^[[\x20-\x7e]]+$"; //只能輸入鍵盤上的可顯字符
    REParseError status = reRule.Parse((const ATL::CAtlRegExp<CAtlRECharTraitsW>::RECHAR *)wt);
    if (REPARSE_ERROR_OK != status){
        return FALSE; //正則表達式解析錯誤
    }

    CAtlREMatchContext<CAtlRECharTraitsW> mcRule;
    wt = (wchar_t *)(LPCTSTR)sourceStr;
    if (!reRule.Match((const ATL::CAtlRegExp<CAtlRECharTraitsW>::RECHAR *)wt,&mcRule)){
        return FALSE; //匹配錯誤
    }
    return TRUE; //匹配成功
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章