search 메서드는 인수로 받은 정규 표현식 객체와 일치한 최초 문자열의 첫 번째 문자 위치를 반환한다. 일치하는 문자열이 없을 경우에 -1을 반환한다.
const str = "hello world!";
console.log(str.search(/world/)); //6
console.log(str.search(/bye/)); //-1
replace 는 첫 번째 인수로 받은 정규 표현식과 일치하는 문자열을 검색, 두 번째 인수로 받은 문자열로 치환한 새로운 문자열을 반환. 원본 문자열은 유지.
g플래그를 설정하면 일치한 문자열을 모두 치환, g플래그 없을 경우에는 처음 일치한 문자열만 치환.
const str = "hello world world.";
console.log(str.replace(/world/, "Kim")); //'hello kim world.'
console.log(str.replace(/world/g, "kim")); //'hello kim kim.'
두 번째 인수인 대체 문자열에 특수한 치환 패턴 $n, $&를 사용할 수 있다.
$n에는 정규 표현식 안에 소괄호를 사용하여 그룹화한 n번째 부분 정규 표현식과 일치한 문자열이 들어간다.
const user = "Kim, test@gmail.com, 010-1234-1234";
const result = user.replace(/0(\d{1,4}-\d{1,4}-\d{1,4})/g, "82-$1");
// 여기서 $1 = 10-1234-1234
// 따라서 010-1234-1234 가 82-10-1234-1234로 replace
console.log(result); //Kim, test@gmail.com, 82-10-1234-1234
const date = "오늘은 2020년2월2일 입니다.";
const result2 = date.replace(/(\d+)년(\d+)월(\d+)일/, "$1/$2/$3");
console.log(result2); //오늘은 2020/2/2 입니다.
$&에는 일치한 부분 문자열이 들어온다.
const address = "123-123 서울특별시 마포구 월드컵로 10길 56";
const result = address.replace(/\d{3}-\d{3}/, "우편번호 $&");
console.log(result);
match 메서드는 첫 번째 인수로 받은 정규 표현식과 일치하는 문자열을 순서대로 저장해서 배열로 반환한다.
const str = "1 안녕,2 안녕 10 124";
console.log(str.match(/\d+/)); //["1"]
console.log(str.match(/\d+/g)); //["1", "2", "10", "124"]
split 메서드는 첫 번째 인수로 문자열을 분할한 다음에 배열에 담아서 반환한다. 첫 번째 인수를 생략하면 원본 문자열 전체를 배열에 담아서 반환한다.
console.log("안녕. 내 이름은 Kim".split(".")); //["안녕", " 내 이름은 Kim"]
console.log("안녕. 내 이름은 Kim".split()) //["안녕. 내 이름은 Kim"]
split 메서드 두 번째 인수로 반환할 문자열의 개수를 설정할 수 있다.
console.log("1, 2, 3, 4, 5".split(/\s*,\s*/, 3));