image

특정 문자 포함 여부 정규식

태그
Javascript
상세설명특정문자 포함 여부 정규식
작성일자2024.04.02

특정 문자 포함 여부를 확인하는 정규식 규칙(리터럴)을 매번 헷갈려 정리해보았다.

정규식 메서드

test()

test() 메서드를 활용해 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환한다.

const regex = /coffee/;
const txt = "I love coffee";
console.log(regex.test(txt));
// true

match()

문자열에서 정규 표현식에 매칭 되는 항목들을 배열로 반환한다.

const regex = /coffee/;
const txt = "I love coffee";
console.log(txt.match(regex));
//["coffee"]

replace()

정규 표현식에 매칭되는 항목을 대체 문자열로 반환한다.

console.log(txt.replace(regex, "water"));
// "I love water"

exec()

문자열을 정규 표현식에 매칭되는 항목으로 쪼개어 배열로 반환한다.

const regex = /coffee/;
const txt = "I love coffee coffee";
console.log((regex).exec(txt));
// ["coffee"]

정규식 구성

슬래쉬 문자 두개 사이로 정규식 기호가 들어가는 형태로 뒤의i 는 정규식 플래그이다.

/regexr/i

플래그 종류

g : Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미한다.

i : Ignore case 를 표현하며 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의미한다.

m : Multi line을 표현하며 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미한다. 

정규식 사용 예시

/[0-9]/g : 0~9 사이의 아무 숫자 ‘하나’를 찾는다.

/123/ : "123" 라는 연속된 문자열을 찾는다. (정확하게 "05"인 문자열 - 순서 상관있음)

/[01]/: "0" 또는 "1"가 나오는 경우를 모두 찾는다 (0 또는 1를 독립적으로 취급해 순서 상관없음)

/^[01]/: 문자열의 시작 부분에 "0" 또는 "1"가 있는 경우 (0 또는 5를 독립적으로 취급해 순서 상관없음)

/^[01]$/: 문자열의 전체가 단일한 "0"또는 "1"로 이루어진 경우 (문자열의 길이가 1이고 값이 0 또는 1인 경우)

/^[05]+$/: 문자열의 전체가 "0"또는 "5"로 이루어진 경우 (문자열의 길이 1이상 임)

const txt = ['0','1', '9','123', '4560', '111', '555', '666', '777'];

const regex = /123/;
console.log(txt.filter((x) => regex.test(x)));
// ["123"]

const regex = /[01]/;
console.log(txt.filter((x) => regex.test(x)));
// ["0","1","123","4560"]

const regex = /^[01]/;
console.log(txt.filter((x) => regex.test(x)));
// ["0","1","123"]

const regex = /^[01]$/;
console.log(txt.filter((x) => regex.test(x)));
// ["0","1"]

const regex = /^[01]+$/;
console.log(txt.filter((x) => regex.test(x)));
// ["0","1","111"]

정규식 테스트 사이트

https://regexr.com/

참고

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

https://inpa.tistory.com/entry/💻-정규식-테스트-사이트-🎁-모음