Lpfix5 got some of 'em..

But here's my opinion..

Code:
if ($regex($3-,/[[:cntrl:]]/g) > 49) { .signal -n d $1-2 codes }
if ($regex($3-,/[[:upper:]]/g) > 49) { .signal -n d $1-2 caps }
if ($regex($3-,/\d/g) > 49) { .signal -n d $1-2 number }
if ($regex($3-,/[[:punct:]]/g) > 49) { .signal -n d $1-2 symbol } 
if ($regex($3-,/[ $chr(174) ]/g) > 49) { .signal -n d $1-2 ascii } 
if ($regex($3-,/[ $chr(160) ]/g) > 49) { .signal -n d $1-2 blur }

As good as it'll probably get. To do this sort of character-counting using any other method involves looping 'n stuff.

Code:
if ($regex($3-,/./g) > 199) { .signal -n d $1-2 lenght }

Lpfix5 has this one right, just a plain $len().

Code:
if ($regex($3-,/(#|http://|www.|.com|.net|.org)/i)) { .signal -n d $1-2 advertise }

The expression could be tightened up a bit, but it's the easiest way.

Code:
if ($regex($3-,/\b(fucck|sck|shyit|btch)\b/i)) { .signal -n d $1-2 swear }

This is the quicked/easiest way for a static list of words. If you want a dynamic list of words, there are other ways, but doing the 'isin' method is nowhere near as efficient in my mind (also nowhere near as accurate. 'isin' will match partial words. The \b(pattern|pattern)\b method is much more accurate.).