티스토리 뷰

자료/Javascript

javascript 정규 표현식

네오블루 2009. 5. 31. 20:34

정규표현식을 이용하는 함수는 크게 두가지가 있습니다.

 

하나는 test() 이고, 또 하나는 replace() 입니다.

 

test는 str의 패턴이 정규식과 일치하는지를 검증하는 함수이고, replace는 특정문자열이 정규식과 일치할 경우 다른 문자열로 변환하는 것입니다.

 

예)

1. test()

 

var regx = /^\d{5}$/;    // 숫자로 시작되며 5자리 숫자로 구성되어 있는 경우

if (regx.test(str)) {

    alert("정규식과 일치합니다.");

} else {

    alert("정규식과 일치하지 않습니다.");

}

 

2. replace()

 

var regx = /^\d{5}$/;  

var reStr = str.replace(regx, "aaa"); // str이 정규식과 일치할 경우 "aaa"로 변환하여 reStr에 저장됨

 

 

정규표현식 형식

정규 표현식은 / / 사이에 쓰여지며, ' ' 이나 " " 은 사용하지 않습니다.

 

정규표현식 예

/^\d{5}$/;

^ 은 문자열의 시작을 의미합니다. 즉, 다음에 나올 정규표현식으로 시작되는 문자열을 의미합니다.

\d 는 숫자를 의미합니다.

{5} 는 바로 앞 정규표현식(\d)를 다섯번 반복한다는 의미입니다. 즉 숫자가 5번 반복되는경우입니다. 같은 숫자일 필요는 없습니다.

$ 는 정규표현식의 끝을 의미합니다.

해석하지면, 숫자로 시작하며, 숫자가 5번 반복되는 경우가 됩니다.

 

 

.      newline 이외의 어떤 문자와도 일치합니다.

\d   숫자를 의미히합니다.

\D   숫자가 아닌 문자를 의미합니다.

\s   공백문자와 일치합니다. 스페이스, 탭, 줄바꿈, 리턴키

\w  문자와 숫자를 의미합니다.

^      패턴의 시작을 의미 합니다.

$     패턴의 끝을 알립니다.

 

/cat$/    cat의 끝나는 문자열 "tomcat"

/^\d/    숫자로 시작되는 문자열 "1aaaa", "22232a"

/\d\d\d/ 세자리 숫자가 포함된 문자열 "a112bb", "112aa", "dfdf222"

/^cat/    cat으로 시작되는 문자열 "catch2"

/\d\d$/   두자리 숫자로 끝나는 문자열 "dffdf76"

 

우리나라 주민번호를 검증하는 정규표현식

/^\d\d[0-1]\d[0-3]\d-[1-4]\d{6}$/

처음 두자리는 아무숫자나올수 있고, 세번째는 0-1(월의앞지리), 네번재는 아무숫자,

다섯번째는0-3(일의앞자리), 여섯번째는 아무숫자,

-

첫번째는 1-4 (1,3은 남자, 2,4는 여자)

나머지는 아무숫자6자리

 

물론 이렇게 해서 주민번호를 조합할순 없습니다 ^^;; 주민번호에는 특정공식이 들어가기 때문이죵.

 

 

수량한정자

*      선행 하위 패턴은 0 혹은 그 이상 와야합니다. 0이니 안올수도 있죠

{n}  선행 하위 패턴이 n번 만큼 반복됩니다.

{min, max}   min 이상 max 이하의 반복입니다.

+     선행 하위 패턴은 1번 혹은 그 이상 와야합니다.

?     선행 하위 패턴은 0혹은 1번만 와야 합니다.

()    그룹문자를 만듭니다. 일반적으로 정규식은 한문자씩 검증하는데 ()로 묶으면 여러 문자를

       그룹으로 묶을 수 있습니다. 예 (hot)

 

/\w*/   문자혹은 숫자가 0번이상 반복됩니다.

/.+/        뉴라인을 제외한 모든 문자가 1번이상 반복됩니다.

/(Hot)? ?Dog/    Hot Dog, HotDog, Dog,  (공백)Dog 와 일치합니다.

 

휴~ 아직 끝나지 않았습니다. ^^;; 물론 위에 것만 알아도 웬만한 정규표현식을 구현하는데 별 문제는 없습니다.

 

대체 메타문자

this|that   this 혹은 that과 일치하는 경우를 의미합니다.

/small|medium|large/   세단어 중 하나가 포함된 문자열과 일치합니다.

/(red|blue) pill/  red pill, blue pill 과 일치합니다.