JAVA
[JAVA] 문자열이 영어로 되어있는지 판단하기(정규표현식)
알리시아코
2025. 4. 23. 21:23
문제설명
외로운 현우는 미소녀 연애 시뮬레이션 게임을 하려고 합니다. 다운로드를 끝내고 게임에 접속하니 아이디를 만들라는 창이 등장했습니다. 아이디는 영어로만 쓸 수 있고, 20글자를 넘어가면 안 됩니다. 현우가 정한 아이디의 생성 가능여부를 출력하세요.
입출력 예
입력 #1
abcdefghijklmnopqrstuvwxyz
입력 #2
ABC
입력값 설명
첫째 줄에 영어 소문자와 대문자로만 이루어진 아이디가 주어집니다. 입력되는 아이디의 길이는 100자를 넘어가지 않습니다.
출력 #1
I
출력 #2
P
출력값 설명
첫째 줄에 아이디의 생성여부를 출력합니다. 사용할 수 있는 아이디라면 P라고 출력하고, 사용할 수 없다면 I라고 출력합니다.
🥠 이 문제에서는 Pattern.matches() 메서드를 사용해줬다.
✔️ Pattern.matches()설명
- Pattern.matches()는 Java에서 정규 표현식을 사용하여 문자열이 특정 패턴과 일치하는지 확인하는 정적 메서드입니다.
- java.util.regex.Pattern 클래스에 속해 있습니다.
- 전체 문자열이 주어진 정규 표현식과 일치해야 true를 반환합니다.
✔️ 기본 요소ㅡ문자 클래스
- [abc]: a, b, c 중 하나
- [^abc]: a, b, c를 제외한 문자
- [a-zA-Z]: 모든 알파벳 (소문자 a-z, 대문자 A-Z)
- [0-9]: 모든 숫자
✔️ 예를들어 간단하게 설명하자면
Pattern.matches("^[a-zA-Z]*$", name)
- ^: 문자열의 시작
- [a-zA-Z]: 모든 알파벳 문자 (대소문자 포함)
- *: 0회 이상 반복
- $: 문자열의 끝
- 즉, "알파벳만으로 구성된 문자열(빈 문자열 포함)"을 검사합니다.
✔️ 문자열에 대한 상세 정규식
| 정규식 패턴 | 설명 |
| "^[a-z|A-Z]*$" | 대소구분 없는 영문만 허용하는 정규식 |
| "^[a-z]*$" | 소문자만 허용하는 정규식 |
| "^[A-Z]*$" | 대문자만 허용하는 정규식 |
| "^[ㄱ-ㅎ|가-힣]*$" | 한글만 허용하는 정규식 |
| "^[a-z|A-Z|ㄱ-ㅎ|가-힣]*$" | 대소구분 없는 영문과 한글만 허용하는 정규식 |
| "^[a-z|A-Z|ㄱ-ㅎ|가-힣| ]*$" | 대소구분 없는 영문과 한글만 허용하는 정규식 (스페이스바 포함) |
| "^[0-9a-zA-Zㄱ-ㅎ가-힣]*$"; | 대소구분 없는 영문과 한글만 허용하는 정규식 |
| "^[0-9a-zA-Zㄱ-ㅎ가-힣 ]*$"; | 대소구분 없는 영문과 한글, 숫자를 허용하는 정규식(스페이스바 포함) |
🥠문제풀이
import문을 불러와 주고
import java.util.regex.Pattern;
문자열에 숫자,특수문구 등 다른 언어가 포함되어 있으면 false를 반환한다
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String name="string"
System.out.println(Pattern.matches("^[a-zA-Z]*$", name));
String fail_name= "this_is;fail";
System.out.println(Pattern.matches("^[a-zA-Z]*$", fail_name));
}
*참고
if 조건문 안에는 boolean 값도 사용 가능하다
두 조건이 모두 true일 때만 전체 조건이 true이다
if 조건문 안에는 boolean 값도 사용 가능하다
두 조건이 모두 true일 때만 전체 조건이 true이다
참고
반응형