Though you were asking for a specifically regex-based answer, regex doesn't always scale up to what is needed: especially when handling erratic human input.
There are a few String-similarity algorithms, which, when combined with a simple preliminary phase like Fairmutex's answer, can provide a much more comprehensive ban filter.
One popular algorithm used is Levenshtein Distance. While it is fast, it is based heavily on order of words, so searching for "Stack Overflow" in an input of "Overflow Stack" will give you a negative.
For previous projects of mine I've used this clever algorithm, which takes into account the latter predicament. While it is a bit heavier, it does the job better than regex and Levenshtein Distance.
Another idea would be to run the input through the Strike-a-Match algorithm I linked earlier, and if the input falls above a specific threshold in similarity (say, 50%+ match), run through a specific general-leet filter. This would function on the basis of replacing commonly-used leet speak. For example "|\|" would get replace with "n", regardless of spacing.