正则表达式匹配用户名的复杂条件

时间:2011-11-08 16:40:39

标签: php regex preg-match

我需要检查字符串是否还有下面指定的内容

  • 必须以字母(大写或小写)开头
  • 可以包含字母字符
  • 可以包含数字字符
  • 可以有破折号
  • 可以有减号 -
  • 可以有下划线_
  • 可以有昏迷,
  • 可以有点。
  • 长度从4到35个字符不多不少

其他一切不应该在这个字符串中有

我坚持这个:

preg_match('/^[\w]{4,35}$/i', $username)

2 个答案:

答案 0 :(得分:7)

if( !preg_match('/^[a-zA-Z][a-zA-Z0-9_,.-]*$/', $username ))
    echo "failed\n";

答案 1 :(得分:2)

preg_match('/^[\w]{4,35}$/i', $username)

确定让我们看看这不起作用:

匹配字符串的开头,然后匹配[a-zA-Z0-9_]至少4次,最多35次。这与您的要求完全不同。

相反,你应该使用:

/^[a-zA-Z][-,.\w]{3,34}$/

不需要区分大小写i修饰符。我也不认为这正是你想要的。通常你需要指定一个你不需要的最小长度。例如,这可以匹配“a”(不是一个好的用户名