I don't know if this works or not, but this is what I have on one of the forums I am an admin at:
I did this to both postdata_presave and threadfpdata_presave hooklocations.
Code:
global $vbulletin;
$pagetext =& $this->fetch_field('pagetext', 'post');
if (($vbulletin->userinfo[posts] < 7) and (stristr($pagetext,'[url') or stristr($pagetext,'[URL') or stristr($pagetext,'[email') or stristr($pagetext,'[EMAIL') or stristr($pagetext,'www.') or stristr($pagetext,'mailto:') or stristr($pagetext,'http://')))
{
//eval(standard_error(fetch_error('error_nourlallowed')));
$this->error('error_nourlallowed');
$return_value = false;
}