Yep...off to re-edit again...
Tested version:
<?php
$testData = array('this\\is-valid.name', '-invalid1', 'invalid2.', '\\invalid3');
foreach($testData as $username)
{
if(preg_match('/^[a-z\d]([a-z\d\-\\\\.]*[a-z\d])?$/i', $username))
{
echo "<p>'$username' is valid</p>\n";
}
else
{
echo "<p>'$username' is NOT valid</p>\n";
}
}
?>
Output:
'this\is-valid.name' is valid
'-invalid1' is NOT valid
'invalid2.' is NOT valid
'\invalid3' is NOT valid