정규표현식 ( Regular Expression )

양혜정·2024년 2월 4일
0

Begin_java

목록 보기
51/71

정규표현식

  • 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어

1. 정규표현식 패턴을 작성

Pattern p = Pattern.compile("^[A-Za-z][A-Za-z0-9]{2,9}$");

=> ^ : 시작
=> [ ] : 글자 1개가 들어오는 것
=> [A-Za-z] : 영문자만 가능하다.
=> [A-Za-z0-9] : 영문자 또는 숫자만 가능하다.
=> [ ] {a,b} : [ ] 안 글자가 최소 a번 최대 b번 반복한다.

-> 최소 2번 반복으로 최대글자수는 3
-> 첫번째 글자 - [A-Za-z] 만 가능
-> 두번째 ~ 마지막 글자 = [A-Za-z0-9] 만 가능

2. 문자열이 주어진 정규식 패턴과 일치하는지 판별하는 객체를 생성한다.

Matcher m = p.matcher(userid);	// 패턴과 일치하는지 확인

-> userid가 정규식 패턴과 일치하는지 확인
-> boolean 타입으로 도출된다.

3. 판별하도록 한다.

if(m.matches()) {	// 정규식 패턴과 일치하면
	this.userid = userid;
} else {	// 정규식 패턴과 일치하지 않으면
	System.out.println("[경고] 아이디는 3~10글자로, " 
    + "첫글자는 영문이어야 하고 나머지는 영문 또는 숫자로만 "
   + "이루어져야 합니다.\n");

캡슐화된 field setter 예시

  • 정규표현식을 사용해서 setter 하기
public void setName(String name) {
// 성명은 공백이 없는 한글로만 이루어져야 하며 2~6글자이어야 한다.
Pattern p = Pattern.compile("^[가-힣]{2,6}$");
Matcher m = p.matcher(name);	// name이 유효성에 맞는지 검색
if(m.matches()) {	// 검사 통과할 경우
	this.name = name;
    // 캡슐화되어있기 때문에 나의 객체에 있으면 this. 으로 표현
} else {
	System.out.println
    ("[경고] 성명은 공백이 없는 한글로만 이루어져야 하며," 
    + "2~6글자로 이루어져야 합니다.");
}	// end of if~else--------
}	// end of public void setName(String name)-----------

정리

my.day.12.a.capsulation -> Gujikja

0개의 댓글

관련 채용 정보