【发布时间】:2019-09-23 18:44:51
【问题描述】:
希望了解如何编辑用户名创建过程以允许在用户名的开头和结尾使用下划线和连字符。
目前,如果您以 _ 结尾用户名,则会将其从创建过程中删除。
$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;
}
【问题讨论】:
-
您可以将
[A-Za-z0-9]部分替换为[A-Za-z0-9_]或\w,但您也可以尝试'/^\w(?:[\w.]*\w)?$/' -
感谢维克托的回复! -- 将 [A-Za-z0-9_] 放在第一和第三位置有用吗?老实说,我并不完全熟悉这行代码中的实际操作/发生顺序。 -- 那么反过来,第一行应该是这样的? $regex = '/^[A-Za-z0-9_]+[A-Za-z0-9_.]*[A-Za-z0-9_]+$/';
-
重点是您的正则表达式要求字符串至少有 2 个字符。我想 1 char 字符串也应该是有效的,不是吗?