-
기본
/패턴/플래그
패턴
/abcd/ // 문자열에 "abcd"가 있는지 찾는다.
플래그
i // 대소문자 구별 안함 g // 매칭 되는 모든 부분을 찾음
복잡한 패턴
정규식을 쓰는 이유. 알파벳만, 숫자만, 어떤 문자열로 시작해서 어떤 문자열로 끝나는지 지정 등등. 정규식을 조합하여 복잡한 패턴의 문자열을 특정할 수 있다. 이를 위해 정규식은 다양한 특수 문자를 지원한다.
Metacharacters(메타 문자)
특별한 의미를 지닌다
cat|dog|fish cat 또는 dog 또는 fish . 어떤 캐릭터든지 \d digit \D non-digit \s white space \S non-white space \w alpha numreic \W non alpha numeric
Quantifier(수량 지정자)
수량을 지정한다.
* : 앞에 있는 엘리먼트를 0번 이상 반복 + : 앞에 있는 엘리먼트를 1번 이상 반복 ? : 앞에 있는 엘리먼트를 0번 혹은 1번 반복 {n} : 앞에 있는 엘리먼트를 n번 반복 {n,} :앞에 있는 엘리먼트를 n번 이상 반복 {n,m} : :앞에 있는 엘리먼트를 n번 이상 m번 이하 반복
Anchor
위치를 지정한다
^ : 시작 문자열 $ : 끝 문자열 \b :단어와 단어의 경계 /^a.*b$/는 a로 시작하면서 어떤문자열이든지 받고 그 다음 b로 끝나는 패턴을 매칭할 수 있다.
Character class
[ ] : 괄호 안에 있는 어떤 문자이든 하나를 매칭한다. [^ ] : 괄호 안에 있는 어떤 문자이든 하나를 매칭하는데, ^다음에 이어지는 것들을 제외한다. . : 뉴라인을 제외한 어떤 문자이든 하나를 매칭한다. \d: [0-9]와 동일 \w: [a-zA-Z0-9]와 동일 [a-zA-Z]는 알파벳 소문자, 대문자 캐릭터 1개를 매칭시켜준다. 여기에 Quantifier를 붙여서 사용할 수 있다. /[a-zA-Z]+/는 알파벳 소문자, 대문자 캐릭터 1개 이상을 의미한다. [abc]: a 또는 b 또는 c, (a|b|c)와 동일하다. [^abc]: a,b,c를 제외한 나머지
Capturing, grouping
(ab)+ : "ab"라는 1개 이상 매칭되어야 한다. 만약 ab+라고 한다면 a 그리고 다음 b가 1개이상인 문자열이라 abbbbbbb이런 것인데 (ab)+ 는 ababab.. 이런 문자열이 매칭될것 (a|b)는 [ab]와 의미상 같다. a또는 b
연습
연습을 위한 사이트는 regex101이 있다.
email
email은 abcd@gmail.com 처럼 되어 있다. 크게 패턴으로 나누면 1개 이상의 텍스트, @, 1개 이상의 텍스트, dot, 1개 이상의 텍스트 /.+@.+\..+/;
8자리 이상의 패스워드
8자리 이상, 32자리 이하의 패스워드 /.{8,32}/
Full matching
정규식에 맞게 텍스트 전체가 맞는지 확인하려면
/^패턴.....$/ 처럼 맨앞에 시작과 끝을 명확하게 지정해주면 된다. js에선 그냥 match, test밖에 없지만, fullMatch같은 함수를 제공해주는 것이 바로 위처럼 하는 것
참고
'간단기법' 카테고리의 다른 글
JS 문득 궁금한거 생길때 정리 (0) 2023.06.02 PHP 에러 핸들링 (0) 2023.05.24 에러 핸들링, PHP, mysqli, prepared statement (0) 2023.05.17 PHP 문득 궁금한거 생길때 정리 (0) 2023.05.16 동적인 데이터를 처리하는 다양한 방법. (0) 2023.03.13