[자바스크립트] 이메일 정규식 익히기

김민지·2023년 10월 26일
0
post-custom-banner

💻 이메일 형식 체크하는 자바스크립트 정규식

1. 문제의 정규식

아래의 코드는 aaa@aa까지만 입력해도 true를 리턴하며, 마침표를 입력한 후에야 다시 false를 반환한다.

const emailRegularExpression 
   = new RegExp('[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$');

2. 내가 원하는 정규식

아래의 코드는 정상적인 이메일을 끝까지 입력할 때까지 false를 리턴한다.

 const emailRegularExpression 
    = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;

1,2의 차이는 플래그 유무밖에 없는데 1에 플래그를 추가해도 다른 결과를 보인다.
당연하다. i 플래그는 대소문자를 구분하지 않겠다는 뜻이니까.
1,2 결과가 다른 이유는 아직도 모르겠다. 뭐라고 검색해야 할까?

🚒 (수정) 추가

👉 그냥 'javascript regular expression literal object different'라고 검색하니까 나왔다.

backslash is the escape character in string literals. To create a literal \ for the expression, you have to escape it is the string

    const emailRegularExpression = new RegExp('[0-9a-zA-Z]([-_\\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\\.]?[0-9a-zA-Z])*\\.[a-zA-Z]{2,3}$');

https://stackoverflow.com/questions/7964916/differences-between-javascript-regexp-literal-and-constructor

profile
이건 대체 어떻게 만든 거지?
post-custom-banner

0개의 댓글