猿问

为用户名验证系统制作 preg_match 的问题

我制作了这个正则表达式代码:

/^([a-zA-Z\d]+[_]?+[a-zA-Z\d]){3,12}$/

我希望表达为:

  • 只允许它以任何字母或数字开始/结束

  • 中间允许低分

  • 只有 3 到 12 个字符

当我测试一个超过 12 个字符的名字时,它仍然给我一个肯定的结果。

我该如何解决?


千万里不及你
浏览 99回答 1
1回答

拉莫斯之舞

你可以使用^(?=.{3,12}$)[a-zA-Z\d]+(?:_[a-zA-Z\d]+)?$细节^- 字符串的开始(?=.{3,12}$)- 长度允许从 3 到 12 个字符[a-zA-Z\d]+- 1+ 个字母或数字(?:_[a-zA-Z\d]+)?- 一个可选的序列_和 1+ 个数字/数字$- 字符串结束
随时随地看视频慕课网APP
我要回答