정규표현식 = 정규식
원하는 패턴에 일치하는 내용이 존재하는지 검증한다.
문자열 데이터가 현재 페이지에 적합한 용도로 사용되는지 체크하는데 유용한 JS 기능이다.
String의 match()
, matchAll()
, replace()
, replaceAll()
, search()
, split()
메서드를 사용할 수 있다.
생성자 함수를 사용하면 정규 표현식이 런타임에 컴파일된다.
바뀔 수 있는 패턴이나, 사용자 입력 등 외부 출처에서 가져오는 패턴의 경우 이렇게 사용한다.const re = new RegExp('ab+c')
test
/조건/.test("검증할문자열")
: true / false를 반환한다.
match
"검증할문자열".match(정규식)
: 일치하는 문자열의 배열을 반환한다.
replace
"검증할문자열".replace(정규식, 대체할문자열)
: 일치하는 문자열을 대체하고, 대체된 결과를 반환한다.
\
: 특수문자를 있는 그대로 탐색(특수문자가 아닌 문자 리터럴로 취급)/a\*b/
패턴을 생성하려면 👉🏻 new RegExp("a\\*b")
g
: 전체 문자열을 탐색해서 모든 일치 반환i
: 대소문자 무시m
: 여러 줄 매칭^
: 부정/* i */
const re = /a/i // 대소문자 구분 없이 a가 있는 문자
/* ^ */
const re = /[^a-z]/ // a~z가 아닌 문자
시작과 끝을 정해주지 않으면, 조건의 내용이 어딘가에 포함만 되어있으면 true가 나온다.
^
: 시작$
: 끝\b
: boundary 문자와 공백 사이의 문자\B
: 문자와 공백 사이가 아닌 문자?
: 0개 또는 1개*
: 0개 이상+
: 1개 이상{자릿수}
: 반복 횟수{3,4}
: 3자리 또는 4자리/\w@a.com/.test("aaaa@a.com") // true
/^\w@a.com$/.test("dddd@a.com") // false : @ 전에 글자수가 하나가 아니라서 false
/^\w+@a.com$/.test("aaaa@a.com") // true
/^\w?@a.com$/.test("aaaa@a.com") // false
/^\w*@a.com$/.test("aaaa@a.com") // true
.
: 1개의 모든 문자(.을 의미하고 싶다면 👉🏻 \.
)\w
: 알파벳, 숫자로 된 문자, 밑줄 기호() [A-Za-z0-9]\W
: w의 반대 [^A-Za-z0-9_]\s
: 공백(스페이스, 탭, 폼 피드, 라인 피드)\d
: 숫자\D
: 숫자가 아닌 문자 [^0-9][a-zA-Z]
: 문자만/* . */
/^\w*@\w+.\w+$/.test("aaaa@a?com") // true
/^\w*@\w+\.\w+$/.test("aaaa@a?com") //false
/^\d{3}-\d{3,4}-\d{4}$/.test("010-1234-5678")