2016-06-09 2 views
0

정규 표현식에 익숙하지 않고 표현식 중 일부 구문이 통과하면 통과 할 정규 표현식을 작성하는 방법이 궁금합니다. 예를 들어정규 표현식을 작성하는 방법 표현식에서 적어도 일부 구문이 전달되었는지 확인

I는 문자열

  • 1 소문자가 있으면 일치이 정규식

    ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$ 
    

    ,

  • 1 대문자,
  • 1 디지트를 가질
  • 1 상징.

4 가지 조건 중 3 가지 조건이 어떤 순서로든 참이라면 정규 표현식을 사용할 수 있습니까?

(즉 문자열 상부 1,1- 기호 또는 상 1 1 하부 있었다면 전달할 것이다 1 자리, 1 개 심볼 등)

이 어떤 도움을 받고있다!

+0

프로그래밍 언어는 무엇입니까? –

+0

영문자와 숫자 만있는 문자와 숫자 또는 모든 언어를 지원해야합니까? –

+0

Asp.Net에서 RegularExpression 특성을 사용하려고합니다. 그리고 오직 영어로 된 편지들. 감사합니다 – James

답변

1

내가 제안 할 수있는 최선의 방법은 캡처 그룹에있는 모든 유형의 문자를 캡처하고 적어도 3/4 캡쳐 그룹에 값이 있는지 확인하는 것입니다 (그룹이 아무 것도 일치하지 않으면 빈 문자열).

^(?:([a-z])|([A-Z])|(\d)|(_|[^\w]))+$ 

암호가 필요한 길이 (예 : 8 ~ 32 자)인지 확인하기 위해 긍정적 인 미리보기를 추가 할 수도 있습니다.

^(?=.{8,32}$)(?:([a-z])|([A-Z])|(\d)|(_|[^\w]))+$ 

편집 : ([\W_])(_|[^\w])하는 것과 동일합니다. "W"을 대문자로 바꾸면 모든 단어가 아닌 문자와 일치합니다.

var PASSWORD_RANKING = { 

    TOO_SHORT: 0, 
    WEAK: 1, 
    MEDIUM: 2, 
    STRONG: 3, 
    VERY_STRONG: 4 
}; 

/** 
* Take a password and returns it's ranking 
* based of the strength of the password (length, numeric character, alphabetic character, special character, etc.) 
* 
* @param password String 
* @param minLength Int 
* 
* @return Int 
*/ 
function rankPassword(password, minLength){ 

    var rank = PASSWORD_RANKING.TOO_SHORT; 
    var score = 0; 

    if (typeof minLength !== 'number' || minLength < 6){ 

     minLength = 8; 
    } 

    if (typeof password === 'string' && password.length >= minLength){ 

     if (/[A-Z]/.test(password)){ score++;} 

     if (/[a-z]/.test(password)){ score++;} 

     if (/[0-9]/.test(password)){ score++;} 

     if (/[[email protected]#$%^&]/.test(password)){ score++;} 

     score += Math.floor((password.length - minLength)/2); 

     if (score < 3){ 

      rank = PASSWORD_RANKING.WEAK; 
     } 
     else if (score < 4){ 

      rank = PASSWORD_RANKING.MEDIUM; 
     } 
     else if (score < 6){ 

      rank = PASSWORD_RANKING.STRONG; 
     } 
     else { 

      rank = PASSWORD_RANKING.VERY_STRONG; 
     } 
    } 

    return rank; 
} 
: 당신은 자바 스크립트를 사용하고자하는 경우 또한, 하나의 문자 클래스를 사용하여 교대 ( more details here)

보다 빠른, 내 웹 사이트의 요구에 대해 "Regular Expression cookbook second edition"에서 제시하는 기능을 적용

섹션 4.19에서는 암호 강도를 강화하는 많은 정규 표현식을 제시합니다. 온라인으로 모든 코드 샘플을 볼 수 있습니다 : http://examples.oreilly.com/0636920023630/Regex_Cookbook_2_Code_Samples.html

+0

도와 주셔서 감사합니다. 조나단! 매우 감사 – James

관련 문제