希望了解如何编辑用户名创建过程,以允许在用户名的开头和结尾使用下划线和连字符。当前,如果您用_结束用户名,则会将其从创建过程中删除。$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 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
您只需要在第一个和最后一个字符集中添加下划线_
和连字符-
,即可让您的用户名以这两个新字符开头或结尾,并像这样编写您的正则表达式,
^[A-Za-z0-9_-]+[A-Za-z0-9_.]*[A-Za-z0-9_-]+$
并且\w
与编写相同,[a-zA-Z0-9_]
因此您可以将正则表达式压缩为此,
^[\w-]+[\w.]*[\w-]+$
只想提到一点,每当您-
在字符集中编写连字符时,请确保始终将其放置为字符集中的第一个或最后一个字符,否则在不知不觉中,连字符可能会用作范围说明符,并且可能不充当文字连字符。尽管和上面的正则表达式一样,字符集中只有\w
和-
,所以我们不必担心连字符的位置。
另外,我不确定您是否要允许仅使用一个字符的用户名(不同于通常只允许使用一个字符的变量名),但是如果您这样做,则可以将正则表达式修改为此,
^[\w-]+([\w.]*[\w-]+)?$
- 1 回答
- 0 关注
- 216 浏览
添加回答
举报
0/150
提交
取消