You could try "laundering" the text on its way in, rather than writing really complicated regexps. In other words, first render it in lowercase, remove all whitespace and punctuation, make substitions for l337 speak, then look for the nasties. It's fairly easy with tr:

$message = uc $message; # uppercasify $message =~ tr/ .;,/d; # remove spaces and punctuation $message =~ tr/13457/least/; # un-1337
(Warning, this is untested.) Of course you could combine those into a single statement. I just broke it up for clarity.

Do realize that the more munging you do in this fashion, the more prone your code will be to false positives. For example, the sample lines I wrote above would trigger on "I had amnesia" and "45 sweaters".


In reply to Re: Robust Anti-Swear script by VSarkiss
in thread Robust Anti-Swear script by Azhrarn

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.