用于用户名验证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的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章