해당 문제는 사용자의 아이디를 확인하여 수정하는 문제로, 문자열의 특정 조건을 확인하며, 값을 차례로 수정하는 문제이다.
총 7개의 단계를 거쳐, 사용자의 아이디를 수정해야 하는데 간략하게 작성하면 아래와 같다.
.
하나로 대체.
제거“a”
로 대체해당 문제는 비밀번호 확인에 사용되는 정규 표현식을 사용하는 방법으로 정규표현식의 대표적인 사용 방식들은 아래와 같다.
기호 | 설명 | 예제 |
---|---|---|
. | 임의의 문자 1개를 의미 | |
^ | 시작을 의미한다 []괄호 안에 있다면 일치하지 않는 부정의 의미로 쓰인다. | ^a : a로 시작하는 단어, [^a] : a가 아닌 철자인 문자 1개 |
$ | $앞의 문자열로 문자가 끝나는지를 의미한다. | a$ : a로 끝나는 단어 |
[] | [] 괄호 안의 문자가 있는지를 확인한다. | [ab][cd] : a,b중 한 문자와 c,d중 한 문자 -> ac ad bc bd |
[^] | [] 대괄호 안에 ^ 문자가 있으면, 제외를 뜻함, 대괄호 안에 ^ 가 쓰이면 제외의 뜻, 대괄호 밖에 ^ 가 쓰이면 시작점의 뜻 | [^a-z] : 알파벳 소문자 a부터 z까지를 제외한 모든 문자 |
- | 사이의 문자 혹은 숫자를 의미한다. | [a-z] : 알파벳 소문자 a부터 z까지 하나, [a-z0-9] : 알파벳 소문자 전체,0~9 중 한 문자 |
또는 | ||
() | 그룹 | 01(0 |
{} | 개수 | a{3}b : a가 3번 온 후 b가 온다→ aab(x), aaab(o), aaaab(o) |
\\b |
공백, 탭, ",", "/" 등을 의미한다 | apple\\b : apple뒤에 공백 탭등이 있다 → apple juice(o), apple.com(x) |
\\B |
\\b 의 부정(공백, 탭 등이 아닌 문자) |
apple\\B → apple.com(o) |
\\d |
0~9 사이의 숫자, [0-9] 와 동일 |
|
\\D |
\\d 의 부정(숫자가 아닌 문자), [^0-9] 와 동일 |
|
\\s |
공백, 탭 | |
\\S |
공백, 탭이 아닌 문자 | |
\\w |
알파벳 대소문자+숫자+"_" , [a-zA-Z_0-9] 와 동일 |
|
\\W |
\\w 의 부정(알파벳 대소문자+숫자+"_" 제외한 문자), [^a-zA-Z_0-9] |
https://velog.io/@youngjun_10/자바-정규식Regular-Expression-정리
우리가 확인해야 하는 조건에 맞추어, 정규식을 작성해보면 아래와 같은 요소들로 나눌 수 있다.
.
, _
, -
를 제외한 문자public static final String REGEX = "[^a-z0-9._-]";