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(小写)字母。IE

"^[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

最好的选择是 Dave 和 Jordi12100 的答案的组合:

使用pre_match()和退出 AZ

于 2013-01-01T01:55:02.720 回答