1

我只想接受带有连字符、数字或字母且至少 6 个字符的小写字母的输入。但只要输入长度超过 6 个字符,下面的正则表达式就接受大写。

$user_name = 'BloggerCathrin';

if(!preg_match('/([a-z0-9]{6}|[a-z0-9\-]{6})/', $user_name))
{
    echo 'please use lowercaps only, either with hyphens, numbers, or alphabets, and at least 6 characters.';
}

我该如何解决?

4

2 回答 2

5

^在开头和结尾处锚定您的字符串$

"/^[a-z0-9-]{6,}$/"
于 2012-12-21T01:43:38.170 回答
2

如果您的模式需要匹配整个字符串 - 从头到尾 - 您需要将其包装在里面^并且$

      /^([a-z0-9]{6}|[a-z0-9\-]{6})$/
start -´                           `- end

PCRE 正则表达式语法 - 元字符

^- 断言主题开始(或行,在多行模式下)
$- 断言主题结束或在终止换行之前(或行尾,在多行模式下)


如果您至少有六个字符(并且您也可以压缩),您的模式可能如下所示:

 /^[a-z0-9-]{6,}$/
             ```- minimum: 6, maximum: unspecified (empty)
于 2012-12-21T01:46:19.310 回答