RegExp

beomjin_97·2022년 9월 18일
0

javascript

목록 보기
12/13

정규표현식은 일정한 패턴을 가진 문자열의 집합을 표한하기 위해 사용하는 형식언어로 특정 패턴과 일치하는 문자열을 검색하거나 추출, 치환할 수 있는 패턴 매칭 기능을 제공한다.

1. 메서드

1.1 RegExp.prototype.exec

const target = 'Is this all there is?'
const regExp = /is/

regExp.exec(target) // [ 'is', index: 5, input: 'Is this all there is?', groups: undefined ]

인수로 전달받은 문자열에 대해 정규표현식의 매칭결과를 배열로 반환한다.
g 플래그를 지정해도 첫번째 결과만 반환한다.

1.2 RegExp.prototype.test

const target = "Is this all there is?";
const regExp = /is/;

regExp.test(target);  // true

인수로 전달받은 문자열에 대해 정규 표현식이 패턴을 검색하여 매칭 결과를 불리언 값으로 반환한다.

1.3 String.prototype.match

const target = "Is this all there is?";
const regExp = /is/;
const regExp2 = /is/g;

target.match(regExp)  // [ 'is', index: 5, input: 'Is this all there is?', groups: undefined ]
target.match(regExp2) // [ 'is', 'is' ]

대상 문자열과 인수로 전달받은 정규표현식의 매칭결과를 배열로 반환한다.
exec와는 달리 g플래그가 지정되면 모든 매칭 결과를 배열로 반환한다.


2. 플래그

  • i (ignore case) : 대소문자를 구별하지 않고 패턴을 검색한다.
  • g (global) : 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색한다.
  • m (multi line) : 문자열의 행이 바뀌더라도 패턴 검색을 계속한다.

3. 패턴

3.1 문자열 검색

const target = "Is this all there is?";
const regExp = /is/; 
const regExp2 = /is/g;  
const regExp3 = /is/i;  
const regExp4 = /is/ig

target.match(regExp) // [ 'is', index: 5, input: 'Is this all there is?', groups: undefined ]
target.match(regExp2) // [ 'is', 'is' ]
target.match(regExp3) // [ 'Is', index: 0, input: 'Is this all there is?', groups: undefined ]
target.match(regExp4) // [ 'Is', 'is', 'is' ]

정규 표현식의 문자 또는 문자열을 지정하면 검색 대상 문자열에서 패턴으로 지정한 문자 또는 문자열을 검색한다. 플래그를 통해 특정 조건을 추가할 수 있다.

3.2 임의의 문자열 검색

const target = "Is this all there is?";
const regExp = /.../g  // 임의의 3자리 문자열을 전역검색

target.match(regExp)  // ['Is ', 'thi', 's a', 'll ', 'the', 're ', 'is?']

.은 임의의 문자 1개를 의미한다.

3.3 반복 검색

const target = 'A AA b BB Aa Bb AAA'
const regExp = /A{1,2}/g
const regExp2 = /A{2}/g
const regExp3 = /A{2,}/g
const regExp4 = /A+/g
const regExp5 = /Aa?/g

target.match(regExp) // [ 'A', 'AA', 'A', 'AA', 'A' ]
target.match(regExp2) // [ 'AA', 'AA' ]
target.match(regExp3) // [ 'AA', 'AAA' ]
target.match(regExp4) // [ 'A', 'AA', 'A', 'AAA' ]
target.match(regExp5) // ['A',  'A', 'A', 'Aa', 'A', 'A','A' ]

{m,n}은 앞선 패턴이 최소 m번 최대 n번 반복되는 문자열을,
{n}은 앞선 패턴이 n번 반복되는 문자열을,
{n,}은 앞선 패턴이 n번 이상 반복되는 문자열을,
+는 앞선 패턴이 1번 이상 반복되는 문자열을,
?는 앞선 패턴이 0번 이상 반복되는 문자열을 의미한다.

3.4 OR 검색

const regExp = /A|B/g;
const regExp2 = /A+|B+/g;
const regExp3 = /[AB]+/g;
const regExp4 = /[A-Z]+/g;
const regExp5 = /[A-Za-z]+/g
const regExp6 = /[0-9]+/g
const regExp7 = /[\d]+/g
const regExp8 = /[\D]+/g
const regExp9 = /[\w]+/g
const regExp10 = /[\W]+/g

|는 or의 의미를 갖는다.
[ ]안에 문자는 or로 동작한다. 범위를 지정하려면 -를 사용한다.
\d는 숫자를 의미하고 \D는 문자를 의미한다.
\w는 알파벳, 숫자, 언더스코의를 의미하고 \W는 그것들을 제외한 문자를 의미한다.

3.5 NOT 검색

const regExp = /[^0-9]+/g
const regExp = /[^A-Z]+/g

[ ]내의 ^는 not의 의미를 갖는다.

3.6 시작 위치로 검색

const regExp = /^https/

[ ]밖의 ^는 문자열의 시작을 의미한다.

3.7 끝 위치로 검색

const regExp = /com$/

$는 문자열의 마지막을 의미한다.


4. 자주 사용하는 정규표현식

4.1 숫자로만 이루어진 문자열

const regExp = /^\d+$/

4.2 하나 이상의 공백으로 시작하는 문자열

const regExp = /^[\s]+/

4.3 아이디

const regExp = /^[A-Za-z0-9]{4,10}$/

알파벳 대소문자 또는 숫자로 시작하고 끝나고 4~10자리의 문자열과 매칭한다.

4.4 메일 주소

const regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-z])*@[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/

4.5 휴대폰 전화번호

const regExp = /^\d{3}-\d{3,4}-\d{4}$/

4.6 특수 문자 포함 여부

const regExp = /[^A-Za-z0-9]/gi
profile
Rather be dead than cool.

0개의 댓글