본문 바로가기
front-end/javascript

[Javascript] 자주 사용하는 정규표현식과 공부 사이트

by MOOB 2019. 9. 21.

 

 

 

서론

자바스크립트를 연습하다가 발견한 점. python에서 replace()를 사용하면 문자열 전체에서 해당하는 문자가 바뀌는데 자바스크립트는 가장 처음 나오는 문자 하나만 바뀌었다.

a = "this text is for test"
print(a.replace("t", "r")) #rhis rexr is for rest
let a = "this text is for text";
console.log(a.replace("t", "r")); //rhis text is for text

이 문제를 해결하기 위해선 정규표현식을 사용해 console.log(a.replace(/t/g, "r"));이런 식으로 표현해야 했는데, 파이썬의 편리함을 느끼는 한 편, JS로 데이터 처리를 잘 하기 위해서 정규 표현식을 제대로 공부해야겠다는 생각도 들었다.

평생 함께하자 파이썬 & JS

정규표현식을 각 잡고 공부하는 건 비효율적일 것 같고, 필요할 때마다 필요한 부분을 조금씩 공부하는 게 맞을 거 같아 참고 사이트를 함께 달아두고 두고두고 보기로 했다.

플래그

  • I : case-insentive 매치
  • g : 글로벌 매치
  • m : 멀티라인 매치

정규 표현식에 플래그 포함시키기 : var re = /pattern/flags;

i 는 문자가 소문자인지 대문자인지 무시한다.

let text = "this text is for text";
let reg = /EX/i; // /EX/ << 이것을 패턴이라 부른다.
console.log(text.match(reg)); //ex
//match() : 대응되는 문자열을 찾는 정규표현식

g 는 매칭되는 문자 전체를 반환한다.

let text = "this text is for text";
let reg = /EX/i;
console.log(text.match(reg)); //ex, ex

정규표현식의 Brackets

  • [abc] : 이 안에 포함된 모든 문자를 찾는다
  • [^abc] : 이 안에 포함되지 않은 모든 문자를 찾는다.
  • [0-9] : 이 사이에 포함된 모든 문자를 찾는다.
  • [^0-9] : 이 사이에 포함되지 않은 모든 문자를 찾는다.
  • (x|y) 둘 중 하나가 포함되면 찾는다.

기본적인 문자열 검증식

  • ^[0-9]*$ : 숫자만
  • ^[a-zA-Z]*$ : 영문자만
  • ^[가-힣]*$ : 한글만
  • ^[a-zA-Z0-9]*$ : 영어/숫자만

자주 쓰이는 문자열 검증식

  • 이메일 : /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/
  • 한국 전화번호 : /^[0-9]{3}[-]+[0-9]{4}[-]+[0-9]{4}$/
  • 북미 전화번호 : ^(\(\d{3}\)[.-]?|\d{3}[.-]?)?\d{3}[.-]?\d{4}$

댓글