希望了解如何编辑用户名创建过程,以允许在用户名的开头和结尾使用下划线和连字符。
当前,如果您用_结束用户名,则会将其从创建过程中删除。
$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;
}
答案 0 :(得分:0)
您只需要在您的第一个和最后一个字符集中添加下划线_
和连字符-
,以允许您的用户名以这两个新字符开头或结尾,并像这样编写正则表达式,>
^[A-Za-z0-9_-]+[A-Za-z0-9_.]*[A-Za-z0-9_-]+$
由于\w
与编写[a-zA-Z0-9_]
相同,因此您可以将正则表达式压缩为此,
^[\w-]+[\w.]*[\w-]+$
也要提到一点,每当您在字符集中写连字符-
时,请确保始终将其放在字符集中的第一个或最后一个字符,否则在不知不觉中,连字符可能会可以用作范围说明符,而不能用作文字连字符。尽管和上面的正则表达式一样,字符集中只有\w
和-
,所以我们在这里不必担心连字符的位置。
此外,我不确定您是否要允许仅使用一个字符的用户名(不同于通常只允许使用一个字符的变量名),但是如果这样做,则可以将正则表达式修改为此,< / p>
^[\w-]+([\w.]*[\w-]+)?$