Can someone help check me on this code? The problem is that if I use a RegEx of: ^.*(?=.{4,})(?=(?:.*[A-Z]))(?=(?:.*[a-z])).*$ The results aren't as expected. I should expect that the password of Aa1 would fail, and yet it is passing the regex_match. I borrowed this code from someone else's project and my concern is that Boost_RegEx doesn't work correctly with wide characters. Is this the case, or is there something else that is causing the problem. ------------------------------------------------------------------------ PUNICODE_STRING Password; wcsncpy(wszPassword, Password->Buffer, Password->Length/sizeof(wchar_t)); wszPassword[Password->Length] = 0; wregex wrePassword(DEFAULT_REGEX); wstrPassword = wszPassword; WriteToLog(L"PasswordFilter: Going to run match"); /// Prepare iterators wstring::const_iterator start = wstrPassword.begin(); wstring::const_iterator end = wstrPassword.end(); match_resultswstring::const_iterator what; unsigned int flags = match_default; bMatch = regex_match(start, end, what, wrePassword); if (bMatch) { WriteToLog(L"PasswordFilter: Password matches specified RegEx"); } else { WriteToLog(L"PasswordFilter: Password does NOT match specified RegEx"); }