가이드
연습 사이트
RegExr: Learn, Build, & Test RegEx
정규표현식 (Regular Expression)
정규표현식을 이해하면 정규표현식 객체를 활용해서 아래와 같은 작업을 할 수 있다.
어떤 문자열에 특정 pattern의 문자 혹은 문자열이 있는지 여부를 알 수 있다.
어떤 문자열에 특정 pattern의 문자 혹은 문자열을 추출할 수 있다.
어떤 문자열이 특정 pattern과 정확히 일치하는지 여부를 알 수 있다.
ex) 어떤 문자열에 특수 문자가 포함되어 있는지 여부
ex) 어떤 문자열이 이메일 형식과 일치하는지 여부
ex) 어떤 문자열이 전화번호 형식과 일치하는지 여부
ex) 어떤 문자열이 영문자 대소문자와 숫자로만 이루어져 있는지 여부
등등..
자주쓰이는 표현식
^[a-zA-Z0-9]+$ 특수문자를 거르기 위해 자주 쓰인다.
[a-zA-Z0-9] 와 [\w]는 동치이다.
[^a-zA-Z0-9] 와 [\W]는 동치이다.
[0-9] 와 [\d]는 동치이다.
[^0-9] 와 [\D]는 동치이다.
정규 표현식 작성법
let reg=/Hello/;
정규표현식은 예시에서 reg와 reg2처럼 //안에 pattern을 넣어 작성한다.
대소문자를 구별하기 때문에 예시에서 reg는 true, reg2는 false를 반환한다.
눈에 보이지 않는 space, tab, new line 기호도 정확히 일치해야한다.
정규 표현식 작성법2
let reg3=new RegExp("Hello");
특별한 의미를 가지고 있는 문자열 ^, $
어떤 문자는 특별한 의미를 가지고 있다.
^ 는 매칭할 문자열의 시작을 의미한다.
$ 는 매칭할 문자열의 끝을 의미한다.
만일 특별한 의미를 가지 고 있는 문자열의 literal 값이 필요하다면 역 슬레시(\) 를 앞에 붙여 줘야한다.
모든 문자를 의미하는 .(점)
case2의 All matches 는 점의 개수의 배수로 매칭된다.
. 점의 literal 값이 필요하다면 역시 역슬레시(\) 가 필요하다.
[ ] 대괄호
[ ] 대괄호 안에는 매칭될수 있는 문자의 목록을 넣는다. 목록의 순서는 중요하지 않다.
[ ] 대괄호 안에는 한글자의 후보군이 들어있다고 볼 수 있다.
Case2에서 [ ] 대괄호와 .을 같이 썼기 때문에 앞의 글자는 d or H, 두번째 글자는 아무거나 한글자를 갖는 두글자를 추출한다.
문자의 범위를 나타내는 [ - ]
문자의 범위는 [ - ] 문법으로 나타낼수 있다. 여러가지 범위도 Case 5 처럼 하나의 표현식으로 쓸수있다.
[ ] => 문자 클래스 문자 클래스 안에 [^abc] 처럼 첫문자로 ^ 가 있다면 a,b,c 각각은 매칭하지 않을 문자 목록이 된다.
( 문자열1 | 문자열2 | 문자열3 )
문자열을 교차 매칭 시키려면 소괄호 안에 | 로 구분해서 문자열을 나열하면된다.
수량자(Quantifiers) : * , + , ?
수량자는 문자가 몇번 올수 있는지 정의한다.
* : 0번이상 (없어도 되고 여러개가 있어도 된다)
+ : 1번이상 (반듯이 있어야 하며 여러개가 있어도 된다)
? : 0 번 또는 1번 (없어도 되고 있다면 오직 한개만 허용)
Case1에서 *는 0번 이상이므로 a없이 b만 있어도 선택된다.
수량자 * 의 사용예시
0 번 이상
수량자 + 의 사용예시
1번이상 (없으면 안됨)
수량자 ? 사용예시
0 번 또는 1번 (있어도 한번만 가능)
{ } 는 정확한 문자의 반복횟수를 정의한다.
{ m } 는 m번 반복 (Case 1)
{ m,n } 는 최소 m 번 최대 n번 반복
{ m, } 는 최소 m번 반복
* 는 { 0, } 와 같다.
+ 는 { 1, } 와 같다.
? 는 { 0, 1 } 와 같다.
예시
영문자 소문자로 시작하고 5글자~10글자 이내로 입력하세요
^[a-z].{4,9}
'javascript, framework > javascript' 카테고리의 다른 글
Step09_fetch(json, parse) ecma6 (0) | 2022.07.20 |
---|---|
Step09_fetch(동기, 비동기, json, fetch) ecma6 (0) | 2022.07.19 |
Step08_promise(setTimeout, promise) ecma6 (0) | 2022.07.19 |
Step07_for(for, for in, forEach, for of) ecma6 (0) | 2022.07.19 |
Step06_templateString(backtick) ecma6 (0) | 2022.07.19 |