인자특수 교체 패턴반환값정규표현식 예시global 적용 (일치하는 모든 요소에 적용)단어 치환 (자리바꾸기)regex와 replacer함수로 구성공식문서에 있는 예시내가 썼던 예시
str.replace(regexp|substr
,newSubstr|function
)
패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환
인자
regexp
(pattern)substr
(pattern)newSubStr
로 대체 될 String
. 정규식이 아닌 글자 그대로의 문자열로 처리됩니다. 오직 첫 번째 일치되는 문자열만이 교체됩니다.newSubStr
(replacement)function
(replacement)주어진
regexp
또는 substr
에 일치하는 요소를 대체하는 데 사용될 새 하위 문자열을 생성하기 위해 호출되는 함수. 이 함수에 제공되는 인수는 아래 "매개변수가 function
으로 지정되었을 때"단원에서 설명합니다.특수 교체 패턴
패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열
$$
"$" 기호를 삽입합니다.$&
매치된 문자열을 삽입합니다.$`
매치된 문자열 앞쪽까지의 문자열을 삽입합니다.$'
매치된 문자열의 문자열을 삽입합니다.$n
n이 1이상 99이하의 정수라면, 첫번째 매개변수로 넘겨진 RegExp객체에서 소괄호로 묶인 n번째의 부분 표현식으로 매치된 문자열을 삽입합니다.반환값
어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열
정규표현식 예시
var str = 'Twas the night before Xmas...'; var newstr = str.replace(/xmas/i, 'Christmas'); console.log(newstr); // Twas the night before Christmas...
global 적용 (일치하는 모든 요소에 적용)
글로벌 옵션은 정규표현식으로만 수행 가능
i
옵션은 대소문자를 구분하지 않겠다는 뜻.var re = /apples/gi; var str = 'Apples are round, and apples are juicy.'; var newstr = str.replace(re, 'oranges'); console.log(newstr); // oranges are round, and oranges are juicy.
단어 치환 (자리바꾸기)
$1
$2
패턴 사용var re = /(\w+)\s(\w+)/; var str = 'John Smith'; var newstr = str.replace(re, '$2, $1'); console.log(newstr); // Smith, John
regex와 replacer함수로 구성
replacer 인자 전달 순서
공식문서에 있는 예시
function replacer(match, p1, p2, p3, offset, string) { // p1 is nondigits, p2 digits, and p3 non-alphanumerics return [p1, p2, p3].join(' - '); } var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer); console.log(newString); // abc - 12345 - #$*%
내가 썼던 예시
const text = "asdfasd.fadsf.adf.adsf.adsfa.png.asa.ioiu.....aasd"; text.replace(/(.*)(\..\w+)/, (match, p1, p2, offset, string)=>{console.log(`p1 : ${p1}, p2 : ${p2}, offset : ${offset}, string : ${string}`)}); // p1(첫번째 그룹에 매칭된 문자열) : asdfasd.fadsf.adf.adsf.adsfa.png.asa.ioiu.... // p2(두번째 그룹에 매칭된 문자열) : .aasd // offset : 0 // string(원본 문자열) : asdfasd.fadsf.adf.adsf.adsfa.png.asa.ioiu.....aasd