2017-12-10 19 views
2

사용자가 PHP에서 새 사용자를 등록하기 위해 사용자 이름 또는 암호 필드의 전체 문자열에 반복 문자 하나 또는 다른 문자을 사용하지 못하게하려고합니다. google 및 regex 위키 및 stackoverflow 및 regex101에서 검색하지만 내 대답을 찾을 수 없습니다. 사용자 이름과 암호 문자 길이의문자열의 전체가 단일 반복 문자인지 Regex 검사 -

최소 8

규칙입니다 : 사용자 이름이나 암호 분야에서

새로운 사용자 11111111,111111111111,22222222,222222222222를 등록, ... , AAAAAAAA, aaaaaaaaaaaa, BBBBBBBB, ..., zzzzzzzz, ... @@@@@@@@, ******** , & & & & & & & & ... 유효하지 않음 11111113,22222221, ..., aaaaaaab, baaaaaaa, ..., zzzczzzz ... ... @@@ 1 @@@@, 2 ******* , & & & & &n & & ... 유효해야합니다.

나는이 패턴 만 나던 작품을 발견하고있다 경고 :

경고 :는 preg_match() :

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

경고가이 아니 종료 구분자 '^'발견 C : ... \ test.php on line 70

해결 방법을 알려주세요. .

이 게시물은 내 대답과 나던 일이 아니었다 :

match the same unknown character multiple times

Perl Regex prevent repeated characters for password policy

UPDATE : (.) ​​

감사합니다 ==> ~^\ 1을 작동 panter.it { 1,} $ ~

감사합니다. 당신의 제안은 좋습니다.

+0

입니다 사용할 수 있을까?제발 그게 좋았어. – Ivonet

답변

4

PHP preg_ * 함수에는 패턴에 구분 기호가 있어야합니다. Ofter used는 ~이지만, 무엇이든 될 수 있습니다.

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

정규 표현식에서 구분 기호로 사용되는 문자로 작업 할 수 있다면 그 문자를 이스케이프 처리해야합니다.

4

왜 정규식인가?

당신은 단순히 코드가 어디

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