diff --git a/ProfanityFilter.Tests.Unit/ProfanityTests.cs b/ProfanityFilter.Tests.Unit/ProfanityTests.cs index 33c48f2..04c5bba 100644 --- a/ProfanityFilter.Tests.Unit/ProfanityTests.cs +++ b/ProfanityFilter.Tests.Unit/ProfanityTests.cs @@ -898,5 +898,14 @@ public void ContainsProfanityReturnsTrueWhenProfanityIsADollarDollar() Assert.IsTrue(result); } + + [TestMethod] + public void ContainsProfanityReturnsTrueWhenProfanityIsVariableCase() + { + var filter = new ProfanityFilter(); + var result = filter.ContainsProfanity("Fuck"); + + Assert.IsTrue(result); + } } } \ No newline at end of file diff --git a/ProfanityFilter/ProfanityFilter/ProfanityFilter.cs b/ProfanityFilter/ProfanityFilter/ProfanityFilter.cs index 3af0bc6..1385e15 100644 --- a/ProfanityFilter/ProfanityFilter/ProfanityFilter.cs +++ b/ProfanityFilter/ProfanityFilter/ProfanityFilter.cs @@ -272,9 +272,9 @@ public bool ContainsProfanity(string term) return false; } - Regex regex = new Regex(string.Format(@"(?:{0})", string.Join("|", potentialProfanities).Replace("$", "\\$"), RegexOptions.IgnoreCase)); + string regexPattern = string.Format(@"(?:{0})", string.Join("|", potentialProfanities).Replace("$", "\\$")); - foreach (Match profanity in regex.Matches(term)) + foreach (Match profanity in Regex.Matches(term, regexPattern, RegexOptions.IgnoreCase)) { // if any matches are found and aren't in the allowed list, we can return true here without checking further if (!AllowList.Contains(profanity.Value.ToLower(CultureInfo.InvariantCulture)))