본문 바로가기
Development (국비 복습 )/자바

[2023-03-07] 비밀번호 전방탐색(?=n)

by Puddingforever 2023. 3. 7.

 

[복습]

.도트를 쓸 때, regex에서는 모든 글자를 의미한다. 정확한 . 도트를 의미한다면 \를 앞에 붙여서 

\.라고 써야한다. 

[] 각진괄호 안에서의 \는 문자를 강조할 때 쓴다

/[\(\)\. \u]/

만약에 진짜로 \ 를 쓰고 싶다면 \\ 이렇게 써야한다. 

/\w\s\w/ == /(\w\s\w)/ 

/[\w\s\w]/ : wsw 중에 하나 

패턴 그룹화에서 /(ㅁㅁㅁ)(ㅁㅁㅁ)(ㅁㅁㅁ)/

그룹0 은 전체를 말함 $0 : (ㅁㅁㅁ)(ㅁㅁㅁ)(ㅁㅁㅁ)

그룹1은 $1 첫번째꺼, 두번째꺼 $2 세번째꺼 $3

replace를 이용해서 그룹화 할 수 있다.

 

 

 

var str = ["ftp://www.abc.com",
                    "https://www.a0bc.com",
                    "https://www.abc.com",
                    "file:///C:/temp/myfile0.html"]

var reg1 = /^[afh].+(?=\:\/\/)/; 
var reg2 = /^[afh].+\:\/\//

//뒤에 패턴이 없어도 찾아서 알려줌 
for(var str of str){
       console.log(str.match(reg1)); 
        console.log(reg1.test(str));
}
console.log("(?=) 이거 안쓸 때")

//^[afh] + . + : + // ( 뒤에 패턴이 더 있어서 false와 null이 나옴 
for(var str of str){
    console.log(str.match(reg2)); 
        console.log(reg2.test(str));
}

 

즉 ! (?=n) 전방탐색을 쓸 때 n이 없으면 false나 null이 나온다. 따라서 비밀번호를 만들 때, 최소 어떤 문자를 포함한다 쓸 때 (?=최소 포함하고 싶은문자)를 쓴다. 

 

/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/

//최소 8 자, 최소 하나의 문자 및 하나의 숫자 

 

댓글