2012-04-25 5 views
5

저는 Regex에 대해 매우 새롭기 때문에 기본적으로 숫자와 문자를 사용할 수 있지만 연속 문자는 입력 할 수없는 규칙을 작성해야합니다.정규식 거부 연속 문자

예를 들어 ABCD -> 확인, abbcd -> 나쁜

내가 일을 그것의 대부분이

하지만 난 파악하지 못할 부분은 내가 연속 된 문자를 금지 어떻게 정확하게? 지금까지

내 코드 :

/^[A-Za-z-0-9]{8,15}$/i 
+0

'[A-Za-z_0-9]'대신'[\ w]'를 사용하십시오 – shift66

답변

4
>>> r = /^((\w)(?!\2))+$/i 
>>> r.exec('abbcd') 
null 
>>> r.exec('abcd') 
[ 'abcd', 
    'd', 
    'd', 
    index: 0, 
    input: 'abcd' ] 

\2 부분은 그룹 (\w) 일치 역 참조와 마지막으로 중 문자 일치입니다. 그래서 부정적인 lookahead가 (?!\2)은 "문자 자체가 따르지 않음"을 의미합니다. 여기에 사용 된 일부 용어가 익숙하지 않은 경우 MDN's Regular Expression Documentation에서 찾아야합니다. , 변경 영업 이익으로

는 8-15 문자로 받아 문자열의 길이를 제한하려면 + {8,15}에 : 나는 그렇게 인 경우 Z와 0 사이의 마이너스 기호 밑줄과 생각 처음에는

>>> r = /^((\w)(?!\2)){8,15}$/i 
>>> r.exec('abcd') 
null 
>>> r.exec('abcdabcd') 
[ 'abcdabcd', 
    'd', 
    'd', 
    index: 0, 
    input: 'abcdabcd' ] 
+0

이 대답은 사용자가 최소 8 자 이상을 입력해야한다는 제한 규칙을 제거했다는 것입니다 – shade917

+0

@ shade917 :이를 달성하기 위해 '+'기호를 {8,15} (사용자의 질문에서)로 변경할 수 있습니다. –

+0

안녕 얘들 아 고마워,이 완벽하게 나를 위해 작동합니다! – shade917