generally speaking this is a big hack
we have a
add_filter("wpmu_validate_blog_signup", "my_validate");
and from here on you have to bypass the exact error.
I can not show you my exact code because of some copyright issues, but at least a part of it. In this example we add hyphens to the allowed characters. I also solved it thru google and stack overflow
function my_validate($result)
{
$errors = $result['errors'];
// we only want to filter if there is an error
if (!is_object($errors))
{
return $result;
}
// create a new var to hold errors
$newerrors = new WP_Error();
// loop through the errors and look for the one we are concerned with
foreach($errors->errors as $key => $value)
{
// if the error is with the blog name, check to see which one
if ($key == 'blogname')
{
foreach($value as $subkey => $subvalue)
{
switch ($subvalue)
{
case 'Site names can only contain lowercase letters (a-z) and numbers.':
$allowedchars="-";
// so whatever you do, you can add something to the allowedchars and bypass the preg match.
// by the way , the exact error case you need to get from the language file
$allowed = '/[a-z0-9' . $allowedchars . ']+/';
preg_match($allowed, $result['blogname'], $maybe);
if ($result['blogname'] != $maybe[0])
{
// still fails, so add an error to the object
$newerrors->add('blogname', __("Only lowercase letters and numbers allowed"));
}
continue;