서론
자바스크립트를 연습하다가 발견한 점. 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로 데이터 처리를 잘 하기 위해서 정규 표현식을 제대로 공부해야겠다는 생각도 들었다.
정규표현식을 각 잡고 공부하는 건 비효율적일 것 같고, 필요할 때마다 필요한 부분을 조금씩 공부하는 게 맞을 거 같아 참고 사이트를 함께 달아두고 두고두고 보기로 했다.
- 참고 : 정규표현식(Regular Expression)을 소개합니다.
지금까지 본 정규표현식 정리글 중 가장 잘 되어있다. - 참고 : JavaScript RegExp Reference
정규 표현식 관련 실습 제공
플래그
- 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}$
'front-end > javascript' 카테고리의 다른 글
[javascript] ES6 export vs NodeJS module.exports와 exports의 차이 (0) | 2019.10.25 |
---|---|
[javascript] 자바스크립트 Drag&Drop 구현하기 (0) | 2019.10.06 |
[Javascript] ES6, let vs const, 호이스팅과 객체 리터럴, 디스트럭쳐링 (0) | 2019.09.20 |
[javascript] ES6 rest 파라미터와 Spread Syntax(전개 구문) (0) | 2019.09.06 |
[javascript] StopWatch를 통해 보는 시간지연함수 (0) | 2019.09.04 |
댓글