正则检查整个字符串是一个单个重复字符 - 通过php



我想在整个用户名或密码字段中,用户仅使用重复的一个字母或任何其他字符,以通过PHP注册新用户。我在Google和Regex Wiki和Stackoverflow和Regex101中搜索,但找不到答案。

用户名和密码字符的最小长度为8。

规则:

在用户名或密码字段中,用于注册新用户 1111111,111111111111,22222,22222222222222,...,AAAAAAAAA,AAAAAAAAAAAAAAAA,BBBBBBBBBB,... ,&&&&&&&& ...应该无效 但 11111113,22222221,...,aaaaaaab,baaaaaaa,...,zzzczzzz,... @@@@@@@@@@1 @@@@,2 ******* ,&&&&& n&& ...应该有效。

我找到了这种模式,但没有起作用,并且有警告:

 pattern1:    ^(?!.*(.)1).{*}$
 pattern2:    ^(.)1{1,}$

警告是:

警告:preg_match():在C:... test.php上的第70章

上找到的结尾定界符'^'

请帮助我解决这个问题。

这篇文章不是我的回答,也无效:

多次匹配相同的未知字符

perl Regex防止重复字符for密码策略

更新:

谢谢panter.it work ==>〜^(。) 1 {1,} $〜

谢谢太阳能。您的建议很好。

php preg_*在功能中,模式必须在周围有分界符。使用的是~,但可以是任何东西。

~^(?!.*(.)1).{*}$~
~^(.)1{1,}$~

如果您可以使用用作正则分界符的角色,则需要逃脱它。

为什么要拨号?

您可以简单地使用

if ($mystring === str_repeat($mystring[0], strlen($mystring))) {
    // invalid
}

最新更新