Work, profanity filtered

Profanity filters suck.
They are more likely to annoy the normal users with false posivites hits (or should we say false positive****s) than to effectively keep the others from spreading their pubertal treasury of words.
Still, sometimes you need to be able to provide an environment that is as safe as possible.
Which is why I started working on a profanity filter lately.
Interestingly enough, there are only a handful of web services that provide remote APIs to call – some free, some commercial. But I needed something local, under our complete control.
Moderators shall be able to edit the list of badwords, and the updated list should be effictive throughout the entire platform instantly.
The profanity filter itself is used by different parts of the platform – mostly public and private chat, messaging/mails and checking usernames at registration.
I thought alot about how to approach this beast, discussed several options with others on EE.
What I ended up doing was a pretty dumb, straight-forward approach. I ditched all ideas to store multiple mutations of a word (including 1337-speak monstrosities) as regular expressions because of performance considerations.
I load a simple list of badwords (all in lowercases) into a HashSet.
I split the input string into words, transform each word into lowercases and check if I find any badword from the list within any of the words.
This implies that several variations of the same word have to be stored separately in the list (like with and without Umlauts, as in blöd and bloed). Other restrictions can be added, like not allowing words with a lot of p.u.n.c.t.u.a.t.i.o.n.
Also, as this is Flash and not your standard IRC client, we can even limit what kind of characters can be typed (not allowing special characters like $’@”& etc.), or dictate that an . or ! or ? ends the chat input
We will see how useable this is in the future. Of course, it will be always possible to circumvent any kind of filter. The question will be, how much noise (and thus, work) we can take in an automated fashion off of the human moderators, who will be watching especially the chats, anway.