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

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

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

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

【问题讨论】:

    标签: php regex validation


    【解决方案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.inforegex SO tag description(还有许多其他链接到很棒的在线资源),以及名为 What does the regex mean 的社区 SO 帖子。另外,rexegg.com 值得一看。
    • @Tanuj1899 我还发布了some regex articles 并计划创建一个包含一些快速正则表达式演示的 Youtube 频道。我会在启动时通知您。
    • 感谢您提供的所有资源,我刚刚开始使用正则表达式。您的频道将对我和所有其他寻求帮助的人非常有帮助。
    猜你喜欢
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2012-08-14
    • 2011-10-10
    • 2021-02-26
    • 1970-01-01
    • 2017-10-04
    相关资源
    最近更新 更多