在用户名的开头和结尾处允许下划线

时间:2019-05-06 06:40:10

标签: php sql regex

希望了解如何编辑用户名创建过程,以允许在用户名的开头和结尾使用下划线和连字符。

当前,如果您用_结束用户名,则会将其从创建过程中删除。

$regex = '/^[A-Za-z0-9]+[A-Za-z0-9_.]*[A-Za-z0-9]+$/';
if(!preg_match($regex, $_POST['username'])) {
        $_SESSION['error'][] = $language->register->error_message->username_characters;
    }

1 个答案:

答案 0 :(得分:0)

您只需要在您的第一个和最后一个字符集中添加下划线_和连字符-,以允许您的用户名以这两个新字符开头或结尾,并像这样编写正则表达式,

^[A-Za-z0-9_-]+[A-Za-z0-9_.]*[A-Za-z0-9_-]+$

由于\w与编写[a-zA-Z0-9_]相同,因此您可以将正则表达式压缩为此,

^[\w-]+[\w.]*[\w-]+$

也要提到一点,每当您在字符集中写连字符-时,请确保始终将其放在字符集中的第一个或最后一个字符,否则在不知不觉中,连字符可能会可以用作范围说明符,而不能用作文字连字符。尽管和上面的正则表达式一样,字符集中只有\w-,所以我们在这里不必担心连字符的位置。

Regex Demo

此外,我不确定您是否要允许仅使用一个字符的用户名(不同于通常只允许使用一个字符的变量名),但是如果这样做,则可以将正则表达式修改为此,< / p>

^[\w-]+([\w.]*[\w-]+)?$

Regex Demo allowing just one character as username