❗️정규표현식
(요약)
정규 표현식 | 설명 |
---|---|
^ | 문자열 시작 |
$ | 문자열 종료 |
. | 임의의 한 문자(단 \은 넣을 수 없음) |
* | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
+ | 앞 문자가 하나 이상 |
? | 앞 문자가 없거나 하나 있음 |
[ ] | 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다. |
{ } | 횟수 또는 범위를 나타냅니다. |
( ) | 소괄호 안의 문자를 하나의 문자로 인식 |
^[0-9]*$ | 숫자 |
^[a-zA-Z]*$ | 영문자 |
^[가-힣]*$ | 한글 |
\w+@\w+\.\w+(\.\w+)? | |
^\d{2,3}-\d{3,4}-\d{4}$ | 전화번호 |
^01(?:0 | 1 |
\d{6} - [1-4]\d{6} | 주민등록번호 |
^\d{3}-\d{2}$ | 우편번호 |
public class NewId {
public String solution(String new_id) {
String result = new_id.toLowerCase();
result = result.replaceAll("[^-_.a-z0-9]", "");
result = result.replaceAll("[.]+", ".");
result = result.replaceAll("^[.]|[.]$", "");
if (result.isEmpty()) result += "a";
if (result.length() > 15) {
result = result.substring(0, 15);
result = result.replaceAll("[.]$", "");
}
if (result.length() <= 2) {
result += String.valueOf(result.charAt(result.length() - 1)).repeat(3 - result.length());
}
return result;
}
public static void main(String[] args) {
NewId newId = new NewId();
System.out.println(newId.solution("...!@BaT#*..y.abcdefghijklm.").equals("bat.y.abcdefghi"));
System.out.println(newId.solution("z-+.^.").equals("z--"));
System.out.println(newId.solution("=.=").equals("aaa"));
System.out.println(newId.solution("123_.def").equals("123_.def"));
System.out.println(newId.solution("abcdefghijklmn.p").equals("abcdefghijklmn"));
}
}