정규표현식
정규표현식
- 문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴
- 정규식에서 쓰이는 메소드
- RegExp :
exec 메소드
,test 메소드
- String :
match 메소드
,replace 메소드
,search 메소드
,split 메소드
- RegExp :
문법 정리
그룹 및 범위
기호 | 뜻 |
---|---|
ㅣ |
또는 |
() |
그룹 |
[] |
문자셋, 괄호안의 어떤 문자든 |
[^] |
부정 문자셋, 괄호안의 어떤 문자가 아닐 때 |
(?:) |
찾지만 기억하지는 않음 |
(?=) |
앞쪽 문자열을 기준으로 그룹 조건을 만족하는지 비교하나, 기억하지는 않음 |
(?!) |
앞쪽 문자열을 기준으로 그룹 조건을 만족하지 않는지를 비교하나, 기억하지는 않음 |
(?<=) |
뒤쪽 문자열을 기준으로 그룹 조건을 만족하는지 비교하나, 기억하지는 않음 |
(?<!) |
뒤쪽 문자열을 기준으로 그룹 조건을 만족하지 않는지를 비교하나, 기억하지는 않음 |
수량
기호 | 뜻 |
---|---|
? |
없거나 있거나 (zero or one) |
* |
없거나 있거나 많거나 (zero or more) |
+ |
하나 또는 많이 (one or more) |
{n} |
n번 반복 |
{min,} |
최소 |
{min,max} |
최소, 그리고 최대 |
경계 종류
기호 | 뜻 |
---|---|
\b |
단어 경계 |
\B |
단어 경계가 아님 |
^ |
문장의 시작 |
$ |
문장의 끝 |
Character classes
기호 | 뜻 |
---|---|
\ |
특수 문자가 아닌 문자 |
. |
어떤 글자 (줄바꿈 제외) |
\d |
숫자 |
\D |
숫자가 아닌 것 |
\w |
문자 |
\W |
문자가 아닌 것 |
\s |
공백 |
\S |
공백가 아닌 것 |
이전 1차 프로젝트 당시, 정규표현식을 이용해 기능을 구현했는데 많은 글을 보니 정규표현식은 예제로 대체한다하여 그대로 붙여서 썼는데, 이메일은 RFC 5322 기준이었다…😂 그 코드가 바로 아래이다…
//email RFC 5322
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
그리하여 정규 표현식 공부 후 이메일 정규표현식 리팩토링을 진행하였다.
[영문•숫자•일부 특수문자]+@[영문•숫자]+\.(특수문자 .)[영문•숫자•.]+
/^[a-zA-Z0-9.^+_-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9.]+$/
앞으로는 제대로 알고쓰기….반성하는 계기가 되었다 🙇🏻♀️❗️