What's wrong
DoesMatchRegex (TextFilter/TextFilter.cs ~L452) splits the text into words via ExtractTextTokens for ByWordAny/ByWordAll, then runs the regex against each word separately (~L488-496). The pattern isn't split. Since no single word ever contains whitespace, any regex that must match across whitespace (a literal space, \s, a phrase) can never match. Filter/IsMatch default to TextFilterMatchOptions.ByWordAny, so this is the out-of-the-box behavior.
Failure scenario (verified with a console app against the net10.0 build)
TextFilter.IsMatch("hello world", "hello world", TextFilterType.Regex); // False
TextFilter.IsMatch("hello world", "o w", TextFilterType.Regex); // False
Only ByWholeString matches. In a regex filter box with default options, typing New York or \d+ items hides every item, even though the regex hint says the text must match the pattern.
Suggested fix
Under ByWordAny, also try the pattern against the whole text: regex.IsMatch(text) || tokens.Any(regex.IsMatch). Keeping the per-word check means word-anchored patterns like ^world keep matching. (For ByWordAll the per-word semantics are arguably intended; at minimum document that whitespace-spanning patterns need ByWholeString there.)
Acceptance criteria
What's wrong
DoesMatchRegex(TextFilter/TextFilter.cs~L452) splits the text into words viaExtractTextTokensforByWordAny/ByWordAll, then runs the regex against each word separately (~L488-496). The pattern isn't split. Since no single word ever contains whitespace, any regex that must match across whitespace (a literal space,\s, a phrase) can never match.Filter/IsMatchdefault toTextFilterMatchOptions.ByWordAny, so this is the out-of-the-box behavior.Failure scenario (verified with a console app against the net10.0 build)
Only
ByWholeStringmatches. In a regex filter box with default options, typingNew Yorkor\d+ itemshides every item, even though the regex hint says the text must match the pattern.Suggested fix
Under
ByWordAny, also try the pattern against the whole text:regex.IsMatch(text) || tokens.Any(regex.IsMatch). Keeping the per-word check means word-anchored patterns like^worldkeep matching. (ForByWordAllthe per-word semantics are arguably intended; at minimum document that whitespace-spanning patterns needByWholeStringthere.)Acceptance criteria
IsMatch("hello world", "hello world", TextFilterType.Regex)andIsMatch("hello world", "o\\sw", TextFilterType.Regex)returntrueunder the defaults.^worldmatching "hello world" under ByWordAny) still pass.