用于用户名验证php的正则表达式

Posted

技术标签:

【中文标题】用于用户名验证php的正则表达式【英文标题】:regex for username validation php 【发布时间】:2021-09-06 10:02:00 【问题描述】:

我正在尝试使用正则表达式和 php 进行用户名验证。 要求是:

没有空格 仅小写字母和数字 除 (.)、(-)、(_) 外无特殊字符,且用户不能同时使用两个或多个特殊字符 用户名不应以特殊字符开头 最小长度为 6,最大长度为 25

这是我到目前为止所做的 /^[a-z0-9]6,25\S*$/

【问题讨论】:

【参考方案1】:

如果用户名末尾不能有特殊字符,请使用

^(?=.6,25$)[a-z0-9]+(?:[._-][a-z0-9]+)*$

否则,如果最后可以有一个特殊的字符:

^(?=.6,25$)[a-z0-9]+(?:[._-][a-z0-9]+)*[._-]?$

见this regex demo。

详情

^ - 字符串开头 (?=.6,25$) - 字符串中允许包含 6 到 25 个字符,而不是换行符 [a-z0-9]+ - 一个或多个数字或小写字母 (?:[._-][a-z0-9]+)* - ._- 出现零次或多次,后跟一个或多个数字或小写字母 [._-]? - 可选的._- $ - 字符串结束。

【讨论】:

谢谢你的回答,我也忘了提用户名不应该只包含数字如何添加这个?我在哪里可以了解更多关于正则表达式代码的信息。谢谢。 @Tanuj1899 没有数字的要求很容易通过负前瞻来实现:^(?!\d+$)(?=.6,25$)[a-z0-9]+(?:[._-][a-z0-9]+)*$ 我不知道你的正则表达式知识水平 :) 所以我只能建议在regexone.com 完成所有课程,阅读regular-expressions.info,regex SO tag description(还有许多其他链接到很棒的在线资源),以及名为 What does the regex mean 的社区 SO 帖子。另外,rexegg.com 值得一看。 @Tanuj1899 我还发布了some regex articles 并计划创建一个包含一些快速正则表达式演示的 Youtube 频道。我会在启动时通知您。 感谢您提供的所有资源,我刚刚开始使用正则表达式。您的频道将对我和所有其他寻求帮助的人非常有帮助。

以上是关于用于用户名验证php的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

用于用户名验证的正则表达式

PHP正则表达式

php正则实现表单验证

PHP 名称验证正则表达式

用于密码验证的正则表达式

PHP正则表达式