JavaScript 정규표현식#2
정방탐색
= 정규표현식으로 매칭한 결과 내용 중 지정한 글자를 제외한 나머지를 결과로 얻고자 할 때
-> 정규표현식 사용 후 (?= 제외하고 싶은 글자나 정규표현식) 을 추가로 작성
let a = 'http://www.naver.com'
console.log('a.match(/.+:/g) :', a.match(/.+:/g))
// \n이 아닌 모든 글자가 1회이상 반복 + :로 끝남
console.log('a.match(/.+(?=:)/g) :',a.match(/.+(?=:)/g))
// : 을 결과에서 제외함
1. 긍정형 전방위 탐색
: (?<=정규식 또는 글자) -> 정규식 또는 글자와 매칭되는 패턴 검색
2. 부정형 전방위 탐색
: (?!=정규식 또는 글자) -> 정규식 또는 글자를 제외한 매칭 검색
전방위 탐색
: 검색하고 버릴 문자를 앞쪽에서 검색한다
후방위 탐색
: 검색 후 버릴 문자를 뒤에서 검색한다
a = '<html>\n\
<head>\n\
<title>안녕하세요 반갑습니다</title>\n\
<body>\n\
<div>웹사이트에서 내용을 발췌합니다.</div>\n\
</body>\n\
</head>'
console.log(a.match(/<div>.+<\/div>/g))
console.log(a.match(/(?<=<div>).+(?=<\/div>)/g))
//<\/div> 의 \ 는 /가 정규표현식의 끝이 아님을 알려줌
예제
1.
1) a 변수에서 '파일이름.확장자명'으로 구성된 파일명만 골라서 출력
a = 일반 텍스트 파일 : abc.txt, 자동실행파일 : autoexec.bat, 데이터분석파일 : bigdata.at, 더미파일 : gfreag, 알수없는 파일 : korea.bar
a = "일반 텍스트 파일 : abc.txt, 자동실행파일 : autoexec.bat, 데이터분석파일 : bigdata.at, 더미파일 : gfreag, 알수없는 파일 : korea.bar"
console.log(a.match(/\S+\.\w+/g))
console.log(a.match(/\b\w*[.]\w+/g))
**
\S 공백제외
\b 공백 (공백을 찾기만하고 출력 x 공백도 함께 출력해야한다면 \s 사용)
\w 문자+숫자
2) 파일의 확장자가 b로 시작하는 파일을 찾아 출력
console.log(a.match(/\S+\.b\w+/g))
3) 파일의 확장자가 b로 시작하지 않는 파일을 찾아 출력
console.log(a.match(/\S+\.[^b]\w+/g))
4) 파일 확장자가 b로 시작하거나 a로 시작하는 파일
console.log(a.match(/\S+\.[ab]\w+/g))
2.
a = '박길동 : park@naver.com, 김하나 : kim@daum.net, 이두울: eedu@myhom.co.kr, 웹사이트 : http://abdfwer.co.kr'
1) 이메일 주소만 골라서 출력
2) 이메일 주소중 .net .com 만 골라 출력
a = '박길동 : park@naver.com, 김하나 : kim@daum.net, 이두울: eedu@myhom.co.kr, 웹사이트 : http://abdfwer.co.kr'
//1)
console.log('1)', a.match(/\w+[@]\w+[.]\w+[.]*\w*/g))
//2)
console.log('2) ', a.match(/\w+[@]\w+[.]\w{3}/g))
console.log('2) ', a.match(/\w+[@]\w+[.](com|net)/g))
3.
a = '현재 접속중인 외부 아이피는 121.66.42.195 이며 내부 아이피는 192.168.0.2 입니다.'
아이피 주소만 매칭하여 출력
a = '현재 접속중인 외부 아이피는 121.66.42.195 이며 내부 아이피는 192.168.0.2 입니다.'
console.log('1) ', a.match(/\d+[.]\d+[.]\d+[.]\d+/g))
console.log('1) ', a.match(/\d+[.]\d+[.]\d+[.]\d+/g))
Replace
replace 함수를 이용하여 패턴으로 매칭된 텍스트를 지정한 텍스트로 치환할 수 있다
let a = 'blue socks and red shoes'
b = a.replace(/blue|white|red/g, 'color')
console.log(b)
예시
1.
정규표현식과 replace를 이용하여 전화번호 뒷자리를 마스킹 = * 로 치환
a = 'park 010-1234-5678, kim 010-9999-8888, lee 010-1111-2222'
console.log(a.replace(/[-]\d{4}\s/g, '-****'))
2.
http를 https 로 치환하기
a = '네이버 - http://www.naver.com/, 다음 - http://www.daum.net/, 네이트 - http://www.nate.com/'
b = a.replace(/http/g, 'https')
c = a.replace(/\w+(?=:)/g, 'https')
//:로 끝나는 문자열을 찾고 https로 치환(후방위 탐색으로 : 는 결과에 포함되지 않음)
console.log(b)
console.log(c)