phpregexvalidationconstraintspassword-strength

Validate user-submitted username string for qualifying length and character constraints


The regex below is to validate a username.

I have this so far, but isn't working.

$username = $_POST['username'];
if (!eregi("^([a-zA-Z][0-9_.]){4,26}$",$username)) {
    return false;
} else {
    echo "username ok";
}

Solution

  • You could use the regex

    /^(?=[a-z]{2})(?=.{4,26})(?=[^.]*\.?[^.]*$)(?=[^_]*_?[^_]*$)[\w.]+$/iD
    

    as in

    <?php
    
    $username=$_POST['username'];
    
    if (!preg_match('/^(?=[a-z]{2})(?=.{4,26})(?=[^.]*\.?[^.]*$)(?=[^_]*_?[^_]*$)[\w.]+$/iD',
                    $username))
    {
     return false;
    }
    else
    {
     echo "username ok";
    }
    
    ?>
    

    (Note: this regex assumes hello_world is a valid user name.)