为用户名验证系统进行preg_match的问题

时间:2020-06-12 19:27:40

标签: php regex

我输入了此正则表达式代码:

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

我希望表达式为:

  • 只允许它以任何字母或数字开头/结尾
  • 允许分数低于中间
  • 仅3到12个字符

当我测试一个超过12个字符的名称时,仍然给我一个积极的结果。

我该如何解决?

1 个答案:

答案 0 :(得分:5)

您可以使用

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

详细信息

  • ^-字符串的开头
  • (?=.{3,12}$)-长度范围为3到12个字符
  • [a-zA-Z\d]+-1个以上的字母或数字
  • (?:_[a-zA-Z\d]+)?-_和1个以上数字/数字的可选序列
  • $-字符串结尾