본문 바로가기
Script/Javascript

Javascript replace 역참조 치환 예제

by 애플 로그 2023. 2. 6.
반응형

정규표현식 역참조 치환 간단한 예제

 

정규표현식 역참조 개념 

역참조는 앞에서 일치 했던 하위표현식을 다시 참조한다는 의미이다.

하나의 정규표현식에는 여러개의 하위표현식이 존재하고

 

각 하위 표현식은 차례대로 저장된다.

역참조는 이를 다시 참조하는 방식으로 쓸수 있다.

 

Javascript replace 역참조 치환 예제

역참조 문법은 정규표현식의 엔진에 따라 표현방식이 많이 다르다.

자바스크립트에서 역참조를 사용 치환 예제를 살펴보자.

하위표현식을 사용하지 않은케이스(reg1)와 하위표현식을 사용한 케이스(reg2)에 따라

어떤식으로 키워드를 사용하여 역참조 치환을 하는지 알아보자.

역참조를 사용하면 원문의 특정 패턴을 찾아 
string + 패턴 + string 으로 치환이 가능하다.

또는 특정 패턴을 추출해서 다시 REPLACE 해야하는 번거로움을 줄일수 있다.

var string = "Hello, abc@efghij.com is my email address.";
string += "\n Hello, ynkim@ynkim.com is your email address";

var reg1 = /\w[\w\.]*@[\w\.]+\w+/gi;    // $& 이용하여 역참조 (하위표현식X) 
var reg2 = /(\w[\w\.]*@)([\w\.]+\w+)/gi;  // $1, $2 이용하여 하위 표현식 2개를 구분하여 역참조


console.log(string.replace(reg1,'[$&]')); 
// reg1은 하위표현식 안함. $&로 참조가능하다 ( 이메일에 [] 대괄호 처리)
결과 : 
Hello, [abc@efghij.com] is my email address.
Hello, [ynkim@ynkim.com] is your email address

console.log(string.replace(reg1,'<A HREF="mailto:$&">$&</A>')); 
//reg1은 하위표현식 안함. $&로 참조가능하다

결과: 
Hello, <A HREF="mailto:abc@efghij.com">abc@efghij.com</A> is my email address.
Hello, <A HREF="mailto:ynkim@ynkim.com">ynkim@ynkim.com</A> is your email address


console.logt(string.replace(reg2,'[ $1 > $2]')); 
//하위표현식 사용시 정규표현식 ()를 2개로 나누어 $1 $2 이렇게 참조한다.
결과:
Hello, [ abc@ > efghij.com] is my email address.
Hello, [ ynkim@ > ynkim.com] is your email address

 

댓글