10

重複の可能性:
正規表現:小文字、ドット、ゼロスペース

以下の正規表現を変更して、小文字のみを許可するにはどうすればよいですか?

function valid_username($username, $minlength = 3, $maxlength = 30)
{

    $username = trim($username);

    if (empty($username))
    {
        return false; // it was empty
    }
    if (strlen($username) > $maxlength)
    {
        return false; // to long
    }
    if (strlen($username) < $minlength)
    {

        return false; //toshort
    }

    $result = ereg("^[A-Za-z0-9_\-]+$", $username); //only A-Z, a-z and 0-9 are allowed

    if ($result)
    {
        return true; // ok no invalid chars
    } else
    {
        return false; //invalid chars found
    }

    return false;

}
4

4 に答える 4

27

文字クラスにAZとazの両方があります。AZ(小文字)のみを許可するには、AZを省略してください。つまり

"^[a-z0-9_\-]+$"
于 2013-01-01T01:47:56.150 に答える
3

A-Z正規表現からを削除するだけです。

また、すでに正規表現を使用しているので、次のようにすべてを正規表現に入れることができます。

function valid_username($username, $minlength = 3, $maxlength = 30)
{
    $regex = "/^[a-z0-9_\-]{{$minlength},{$maxlength}}$/";

    return preg_match($regex, trim($username)) === 1;
}

ユーザー名が空ではなく、許可された長さであり、許可された文字のみが含まれていることを確認します。

于 2013-01-01T01:56:11.377 に答える
2

この関数eregは非推奨です。preg_matchを使用します。関数を使ってみませんstrtolowerか?preg_match('/ ^ [a-z0-9] + $ /'、$ nickname);

編集:

preg_match('/ ^ [az] + $ /'、$ user);

于 2013-01-01T01:48:40.343 に答える
1

最良の選択肢は、デイブとJordi12100の答えの組み合わせです。

pre_match()AZを使用してドロップアウトする

于 2013-01-01T01:55:02.720 に答える