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; //匹配成功
}