프론트에선 쓸 일 없을 줄 알았던 것 중 하나가 정규표현식이었는데, 아니었다.
나는 이번 프로젝트에서 회원가입할 때 정규표현식을 사용하여 사용자가 형식에 맞지 않는 input값을 입력하면
빨간 글씨를 노출시켜 제대로 입력할 수 있도록 하였다.
간단한 정규표현식을 쓸 때도 한 반나절 정도 걸렸는데, 이유는 include함수를 사용해서였다.
includes가 아닌 match함수를 기억하자
password.match(/^(?=.*[a-zA-Z])((?=.*\d)).{8,16}$/);
정규표현식의 문법은 기본적으로 이렇다.
문자 | 기능 | 설명 |
---|---|---|
. | 문자 | 하나의 문자와 일치한다. |
[] | 문자 클래스 | [와 ]사이의 문자 중 하나를 선택한다. [a-z]는 a-z 중 하나를 의미한다. |
^ | 처음 | 문자열의 처음을 의미한다. |
$ | 끝 | 문자열의 끝을 의미한다. |
[^ ] | 부정 | 문자클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd등을 포함한다. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다. |
\n | 일치하는 \n번째 패턴 | 일치하는 패턴들 중 n번째를 선택하며, 여기에서 n은 1에서 9중 하나가 올 수 있다. |
* | 0회 이상 | 0개 이상의 문자를 포함한다. a * b는 ab, aab, aaab등을 포함한다. |
{m,n} | m이상 n이하 | |
? | 0 또는 1회 | a?b는 "a", "ab"를 포함한다. |
+ | 1회 이상 | a+b는 ab, aab, aaab를 포함하지만 a나 b를 포함하지 않는다. |
or연산자 | 선택 | 여러 식 중에서 하나를 선택한다. 예를 들어, abc or adc는 abc와 adc문자열을 모두 포함한다. |