icq
#[0-9]{6,12}#i

aim
#[a-z]{1}[[:alnum:]]{2,15}#i

yahoo
#[[:alnum:]]{1,32}#i

msn
#(?:[-.]?[0-9_a-z])(?:[-.]?[0-9_a-z])*@(?:msn|hotmail)\\.[a-z]{2,4}#

-----

per controllare un numero max di numeri si potrebbe usare il pattern condizionale, ma diventa una cosa enorme.
dovrei documentarmi...