正则表达式通过PHP检查整个字符串是否是单个重复字符

正则表达式通过PHP检查整个字符串是否是单个重复字符,php,regex,passwords,Php,Regex,Passwords,我想防止用户在整个用户名或密码字段字符串中重复使用一个字母或任何其他字符,以便通过PHP注册新用户。 我在google和regex wiki、stackoverflow和regex101中搜索,但找不到我的答案 用户名和密码字符的最小长度为8 规则: 在用于注册新用户的用户名或密码字段中 11111111111111111111222222222222222,…,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我想防止用户在整个用户名或密码字段字符串中重复使用一个字母或任何其他字符,以便通过PHP注册新用户。 我在google和regex wiki、stackoverflow和regex101中搜索,但找不到我的答案

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

规则:

在用于注册新用户的用户名或密码字段中 11111111111111111111222222222222222,…,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa******** ,&&&&&&&&... 应该是无效的 但是 111111132222221,…,AAAAAAAA B,AAAAAAAA,…,zzzczz,…@@@1@@@2******* ,&&&&&n&&&&。。。应该是有效的

我发现了这种模式,但不起作用,并发出警告:

 pattern1:    ^(?!.*(.)\1).{*}$
 pattern2:    ^(.)\1{1,}$
警告如下:

警告:preg_match():在第70行的C:…\test.php中找不到结尾分隔符“^”

请帮我解决这个问题

这些帖子不是我的答案,也不起作用:

更新:

谢谢panter。它工作==>~^(.)\1{1,}$~


谢谢你。你的建议很好。

在PHP preg_*函数中,模式必须有分隔符。经常使用的是
~
,但它可以是任何东西

~^(?!.*(.)\1).{*}$~
~^(.)\1{1,}$~
如果可以使用正则表达式中用作分隔符的字符,则需要对其进行转义。

为什么要使用正则表达式

你可以简单地使用

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

你的密码在哪里?请把它展示出来,还有哪里出了问题等等