특정 문자 포함 여부를 확인하는 정규식 규칙(리터럴)을 매번 헷갈려 정리해보았다.
정규식 메서드
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://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
https://inpa.tistory.com/entry/💻-정규식-테스트-사이트-🎁-모음